我最近在本地服务器上安装了Node.js,当我创建一个“server.js”文件(使用.createServer()方法添加服务器)时,它可以正常加载。
然而,在安装Express.js之后,默认的文件如下:
/bin
/node_modules
/public
/routes
/views
app.js
package.json
在参考了一些文档后,我被指示要进入终端并输入以下命令:
node app.js
当没有任何操作时,命令行会在不到一秒的时间内刷新到下一行,并在访问正确的IP和端口后打开浏览器,但无法连接。
以下是app.js文件中的代码:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', routes);
app.use('/users', users);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});
module.exports = app;
我理解,在文件开头被引用的实际“express”模块是发生魔法的地方,然而,当我运行命令行时:
node app.js
什么都没有发生。但是,如果我调用以下行:
npm start
一切似乎都正常。我希望按照文档进行操作,您有没有任何理由导致 app.js 无法工作?
谢谢。
更新:我的问题与其他已发布的问题太相似了,因此我必须澄清它们之间的确切差异。在另一个问题中,一个人在运行默认的 'app.js' 文件上使用 Supervisor 命令时收到了一个代码编号。
虽然类似,但这个问题应该保留,因为那些使用和我相同方法感到困惑的人将通过使用“node app.js”而不完全了解 Supervisor 实用程序来专注于实际的 'app.js' 文件的身份。
问候。