1


我在使用 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.');

当您想到为什么会抛出错误时,这是​​有道理的;但是,当我确定我指定了查看引擎时,就会变得混乱。

4

1 回答 1

4

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

于 2013-08-30T06:06:14.797 回答