我试图使用跨环境包有两个独立的脚本配置用于生产和开发..但是cross-env没有填充
值config.js
const dotenv = require('dotenv');
const path = require('path');
// this is used for resolving the correct .env file
dotenv.config({
path : path.resolve(__dirname, process.env.NODE_ENV + '.env')
});
module.exports = {
NODE_ENV: process.env.NODE_ENV,
HOST: process.env.HOST,
LISTENPORT: process.env.LISTENPORT,
DBHOST: process.env.DBHOST
}
package.json
"scripts": {
"prod": "cross-env NODE_ENV=production&& node index.js",
"dev": "cross-env NODE_ENV=development&& node index.js"
}
index.js
const config = require('./config.js');
expressApp.listen(config.LISTENPORT, () => {
console.log(config);
});
如果我用npm run dev
或npm run prod
启动服务器并不重要,在任何情况下,从index.js输出到控制台是:
> cross-env NODE_ENV=development&& node index.js
{
NODE_ENV: undefined,
HOST: undefined,
LISTENPORT: undefined,
DBHOST: undefined
}
我不知道我做错了什么。
我将cross-env
改为export
,似乎可以工作。可能无法在windows上运行,但至少可以在linux/macos上运行。
"scripts": {
"prod": "export NODE_ENV=production&& node index.js",
"dev": "export NODE_ENV=development&& node index.js"
}