ExpressJs 不会在生产模式下缓存视图

ExpressJs doesn't cache views in production mode

NODE_ENV 设置为 production 时,ExpressJs 无法缓存我的 views,我遇到了问题。我正在使用 EJS template engine。这是我的代码:

npm 脚本

"start": "set NODE_ENV=production && node ./bin/www"

app.js

console.log(app.get('env')) => logs production
console.log(app.get('view cache')) => logs undefined
app.set('view cache', true)
console.log(app.get('view cache')) => logs true

所以当我将 NODE_ENV 环境变量设置为 productionExpressJs 似乎没有启用视图缓存,但是当我通过调用 app.set('view cache', true) 手动启用它时它会。根据 ExpressJs 它应该默认启用视图缓存。

我确实测试了缓存是否有效,但只有在我手动启用它时才会有效。

首先 运行 你的应用程序 NODE_ENV=production node app.js 如果它 true 那么你应该在 package.json.

中更改你的 start 属性

我明白了。问题不在于 ExpressJsnpm scripts,而在于我使用的 shell 命令。

当使用 console.dir 时,我看到 NODE_ENV 被设置为 production 并带有一个额外的 space。将 npm 脚本更改为 "start": "set NODE_ENV=production&&node ./bin/www" 确实有效。