Express 4.x中“./bin/www”是做什么的?
我刚刚开始在Node.js应用程序中学习Express 4.0,并发现它生成了./bin/www
文件,其中只有应用程序服务器和端口设置被写入,其他所有其他类似中间件和路由的文件都被定义./app.js
文件。
但是,我不确定这是./bin/www
。 我已经使用了Express 3.x,并且我一直在相同的./app.js
文件中定义服务器和端口设置以及路由和中间件,并且使用node app.js
启动了我的节点应用程序。 那么使用./bin/www
什么./bin/www
? 它是否仅将服务器和端口定义与其他人分开?
现在,当我使用express生成器创build包时, package.json
包含以下定义:
"scripts": { "start": "node ./bin/www" }
但是,我不知道是否应该使用node ./bin/www
或npm start
启动我的应用npm start
。 我应该运行哪个命令来启动我的应用程序?
而且,当我将应用程序部署到heroku时,我应该在Procfile
文件中写什么? web: node app.js
够了吗?
在Express 3.0中 ,您通常会使用app.configure()
(或app.use()
)来设置所需的中间件。 您指定的中间件与Express 3.0捆绑在一起。
例:
var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var app = express(); // all environments app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.compress()); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride());
但是在Express 4.0中,所有的中间件都被删除了,所以它们可以独立于核心Express(除了静态中间件)进行维护和更新,因此它们需要单独调用(你在app.js
看到的)。
bin/
目录是一个你可以定义你的各种启动脚本的地方 , www
是一个例子,它应该看起来像最终你可以有启动脚本,如test
, stop
或restart
等。有了这个结构,你可以有不同的configuration,而不会触摸app.js
启动你的快速应用程序的正确方法是
npm start
要将Express 4.x应用程序部署到Heroku ,请将其添加到您的Procfile
。
web: npm start
像Express 3.x这样的节点应用程序使用非标准的启动文件app.js
,但这是错误的文件运行。
package.json
有
"scripts": { "start": "node ./bin/www" }
其中说明启动命令行。 这是不重要的,因为它可能包含完整的命令行,而不仅仅是起始文件的path。
如果您使用的是快递生成器,只需查看您的本地文件./bin
,就可以在./bin文件中findwww
文件。 所以当你运行node ./bin/www
,node.js会在www
文件中执行代码。 没有什么花哨。
把这个到Procfile web: node ./bin/www
并检查它是否与foreman start
。 该应用程序应该在5000端口上可用