2017-01-01 55 views
1

NODE_ENV設置爲production時,我遇到沒有緩存我的views的問題。我正在使用EJS template engine。這裏是我的代碼:ExpressJs在生產模式下不緩存視圖

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它應該默認啓用視圖緩存。

我做了測試,如果緩存的作品,但只有當我手動啓用它。

回答

0

我想通了。問題不在於ExpressJsnpm scripts,而是使用了我使用的shell命令。

當使用console.dir時,我看到NODE_ENV被設置爲production並有額外的空間。將npm腳本更改爲"start": "set NODE_ENV=production&&node ./bin/www"確實奏效。

0

首先運行您的應用程序NODE_ENV=production node app.js,如果它的true因此您應該更改您的start屬性package.json

+0

你的意思是從CLI運行'set NODE_ENV = production && node。/ bin/www'嗎?我做到了,但不幸的是結果相同。我在Windows上,所以你提供的代碼將不起作用。 – Tarabass

+0

當你從CLI運行時,你不需要'set'和'&'。 –

+0

當我不使用它們時會引發一個錯誤:''NODE_ENV'不被識別爲內部或外部命令, 可操作的程序或批處理文件。 ' – Tarabass