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.');
当你想到错误被抛出的原因时,这是有道理的; 然而,当我确定我指定了一个查看引擎时,会变得混乱。
嗯,完全省略app.configure
包装。 只要把它里面的代码,并使其成为顶级。 Nodejitsu运行您的应用程序NODE_ENV=production
,而不是开发。 一般来说,任何应该始终运行的configuration,例如上面的所有代码,都不应该放在app.configure
callback中。 我从不使用app.configure
,因为它基本上是无用的,但它的目的是在开发和生产环境之间有所不同。