Nodejitsu - 错误:未指定默认引擎且未提供扩展名

时间:2013-08-30 05:32:35

标签: node.js view nodejitsu


我遇到了Nodejitsu的问题。我的应用程序在本地部署时运行完美但我最近已经介绍到nodejitsu并且我已经上传了我的应用程序,数据库和所有内容。 但是,当我尝试部署我的应用程序时,我不断收到内部服务器错误"。 当我查看日志时,它告诉我:

Error: No default engine was specified and no extension was provided.

我在package.json和app.js文件中指定了查看引擎,该文件负责控制应用程序。

app.configure('development', function(){
 app.set('views', __dirname + '/views');
 app.set('view engine', 'jade');

 app.use(express.static(__dirname + '/public'));
 app.use(express.logger('dev'));
 app.use(express.bodyParser({uploadDir: './uploads' }));
 app.use(express.cookieParser());
 app.use(express.session({secret: 'mySecret', cookie: {maxAge: 25920000000}}));
 app.use(express.errorHandler());

 app.use(passport.initialize());
 app.use(passport.session());

 app.use(app.router);
});

package.json是

"engines": {
  "node": "0.10.x",
  "jade": "0.31.0"
}

正如您所看到的,我清楚地设置了视图引擎,但我不明白为什么会出现该错误。 我还在lib / views.js文件中扫描了引发错误的行

if (!ext && !this.defaultEngine) throw new Error('No default engine was specified and no extension was provided.');

当你想到错误抛出的原因时,这是有意义的;但是,当我确定我指定了一个查看引擎时,会变得混乱。

1 个答案:

答案 0 :(得分:4)

啊,完全省略app.configure包装器。只需将代码置于其中并使其成为顶级代码。 Nodejitsu正在使用NODE_ENV=production运行您的应用,而不是开发。通常,任何应该始终运行的配置(例如上面的所有代码)都不应放在app.configure回调中。我从来没有使用app.configure,因为它基本上没用是如此微不足道,但它的目的是在开发和生产环境之间有所不同。