process.env.NODE_ENV 无论如何都不匹配 'development'
process.env.NODE_ENV not matching 'development' no matter what
刚刚迁移到最新的 Express,并停留在完全简单的事情上。
那么,这个提炼出来的例子怎么可能:
var env = process.env.NODE_ENV || 'development';
console.log(env);
if ('development' == env) {
console.log('im here');
}
else {
console.log('nah');
console.log(env);
}
此服务器文件作为 SET NODE_ENV=development & node server.js
运行
给出输出:
development
nah
development
而不是
development
im here
顺便说一句,如果我只是手动设置 var env = 'development'
那么它应该可以正常工作。
表示 4.11.2,节点 0.12.0,win8 x64。
您的代码看起来不错,因此相等性测试一定失败的原因是字符串不相等。确保您的环境变量开发字符串中没有任何额外的字符,例如空格。
我在 windows 模式下遇到了同样的问题。我不确定 linux。此问题是由单词 "development" 与“&”字符之间的空格引起的。您可以通过删除命令中的空格来修复。示例:SET NODE_ENV=development& node server.js
同样的问题,我发现使用 env.includes('development')
没问题。
我试着按照这里的建议去做,但没有什么能使我摆脱任性 space。
所以我只是trim需要使用它的变量:
require('dotenv').config();
const configSet = () => {
const envData = process.env;
console.log('configSet -> process.env', envData);
console.log('configSet -> envData.NODE_ENV', envData.NODE_ENV);
const prodOrDevMode = envData.NODE_ENV.trim();
switch (prodOrDevMode) {
case 'development':
envData.TABLE_NAME = envData.DB_TABLE_DEV;
return envData;
case 'production':
envData.TABLE_NAME = envData.DB_TABLE_PROD;
return envData;
default:
throw new Error('Incorrect env setting');
}
};
const config = configSet();
module.exports = { config };
我将不胜感激对此的任何反馈,特别是如果这可能会导致问题
刚刚迁移到最新的 Express,并停留在完全简单的事情上。 那么,这个提炼出来的例子怎么可能:
var env = process.env.NODE_ENV || 'development';
console.log(env);
if ('development' == env) {
console.log('im here');
}
else {
console.log('nah');
console.log(env);
}
此服务器文件作为 SET NODE_ENV=development & node server.js
运行给出输出:
development
nah
development
而不是
development
im here
顺便说一句,如果我只是手动设置 var env = 'development'
那么它应该可以正常工作。
表示 4.11.2,节点 0.12.0,win8 x64。
您的代码看起来不错,因此相等性测试一定失败的原因是字符串不相等。确保您的环境变量开发字符串中没有任何额外的字符,例如空格。
我在 windows 模式下遇到了同样的问题。我不确定 linux。此问题是由单词 "development" 与“&”字符之间的空格引起的。您可以通过删除命令中的空格来修复。示例:SET NODE_ENV=development& node server.js
同样的问题,我发现使用 env.includes('development')
没问题。
我试着按照这里的建议去做,但没有什么能使我摆脱任性 space。
所以我只是trim需要使用它的变量:
require('dotenv').config();
const configSet = () => {
const envData = process.env;
console.log('configSet -> process.env', envData);
console.log('configSet -> envData.NODE_ENV', envData.NODE_ENV);
const prodOrDevMode = envData.NODE_ENV.trim();
switch (prodOrDevMode) {
case 'development':
envData.TABLE_NAME = envData.DB_TABLE_DEV;
return envData;
case 'production':
envData.TABLE_NAME = envData.DB_TABLE_PROD;
return envData;
default:
throw new Error('Incorrect env setting');
}
};
const config = configSet();
module.exports = { config };
我将不胜感激对此的任何反馈,特别是如果这可能会导致问题