有点广泛的问题,但是在JS世界的所有这些趋势中,有时很难找到关于这些简单事物的信息.在这种项目中组织文件和文件夹的更好方法是什么?有一些来自Facebook的语言服务器示例,但它适用于非常基本的项目.
另请参阅git上的 React示例
但这些例子只是为了玩弄.
目标是 - 明确区分客户端和服务器组件.将它们移动到单独的文件夹树中.也有类似app的结构(例如Django)
所以主要的问题是:
将nodejs/iojs服务器端与React客户端组件分开并将它们放在一个项目中的正确方法是什么?
项目:
我看到了一些我继承的代码的模式.每个目录都有自己的JS文件,但也有一个index.js实际上从其他JS文件导出项目.
我认为这样做是为了让你可以准确地看到你要导出的内容,因为主要的导出是在index.js中,而主要代码是在其他js文件或文件中.
它是否正确?这种模式叫什么?
我应该继续使用这种模式吗?
我在我的应用程序中使用iojs和koa,最近我决定将iojs更新为nodejs v4.4.4.更新非常顺利,我的应用程序立即运行.问题是我在我的开发机器上使用自签名SSL证书,在我更新到nodejs后,当我尝试访问网站时收到以下消息:
此站点无法提供安全连接
localhost使用不受支持的协议.
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
客户端和服务器不支持通用SSL协议版本或密码套件.当服务器需要不再被认为是安全的RC4时,可能会导致这种情况.
我正在使用nvm所以我尝试切换到iojs并且该网站再次运行.
经过一些阅读后,我发现我必须更新openssl到版本1.0.2g而不是1.0.1g我用来创建.key和.crt文件的版本.所以我更新openssl并生成了新的密钥和证书文件,如下所示:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
可悲的是,这并没有解决问题.
这是我用来在服务器上设置https的代码:
let sslOptions = {
key: fs.readFileSync('/etc/apache2/ssl/apache.key'),
cert: fs.readFileSync('/etc/apache2/ssl/apache.crt')
};
let server = require('https').createServer(sslOptions, app.callback())
Run Code Online (Sandbox Code Playgroud)
难道我做错了什么?为什么它适用于iojs并且不能与nodejs一起使用?
我是Node的新手,我正在努力理解事件和函数之间的主要区别.两者都需要被触发,所以如果我们不得不触发它,为什么我们需要一个事件呢?
与触发功能有什么不同?
示例代码:
var events = require('events');
var eventEmitter = new events.EventEmitter();
eventEmitter.on('event1', function () {
console.log('Event 1 executed.');
eventEmitter.emit('event2');
});
eventEmitter.on('event2', function() {
console.log('Event 2 executed.');
});
eventEmitter.emit('event1');
console.log('Program Ended.');
Run Code Online (Sandbox Code Playgroud)
我们可以通过函数实现相同的结果,对吧?
我确信这在Node中有一些重要的意义(否则它不会存在,哈哈),但我很难理解它.
帮助赞赏!:)
在我进入它之前,我已经查看了我能找到的每个类似问题,并且我发现没有解决我的问题.
我正在运行2个docker容器,1个用于nginx,1个用于nodejs api.我使用nginx作为反向代理.
当我请求localhost/api/x时,我收到一个502坏网关和nginx日志
nginx_1 | 2015/08/15 15:30:30 [error] 9#0: *1 connect() failed (111: Connection refused) while connecting to upstream, client: X.X.X.X, server: _, request: "GET /api/x HTTP/1.1", upstream: "http://127.0.0.1:8543/x", host: "localhost"
Run Code Online (Sandbox Code Playgroud)
我能够在我的计算机上使用docker ps获取8543映射到的端口,并且可以在那里访问应用程序.这使我得出节点应用程序正在运行并监听正确端口的结论(8543).我还能够从错误消息和重写日志中判断出请求uri正在被正确地重写.
我一直在反对这个问题,并且无法弄清楚什么是错的,任何帮助都将不胜感激!
我的nginx.conf:
user nginx nginx;
worker_processes auto;
worker_rlimit_nofile 8192;
events {
worker_connections 8000;
}
error_log /dev/stderr notice;
pid /var/run/nginx.pid;
http {
# Hide nginx version
server_tokens off;
rewrite_log on;
# mime types
include mime.types;
default_type application/octet-stream;
# Update charset_types due to updated mime.types
charset_types text/xml text/plain …Run Code Online (Sandbox Code Playgroud) 我看到Node.js已将i/o添加到其功能中,这是否意味着它现在更加异步,或者它使用与以前相同的并发模型?
另外,我认为Node在v8上,他们为什么要回到v4?