process.env.NODE_ENV无论如何都不匹配'development'

Max*_*ari 4 if-statement node.js express

刚刚迁移到最新的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);
}
Run Code Online (Sandbox Code Playgroud)

使用此服务器文件作为SET NODE_ENV = development&node server.js运行

给出输出:

development
nah
development
Run Code Online (Sandbox Code Playgroud)

代替

development
im here
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果我只是手动设置var env = 'development'然后它应该工作.

表达4.11.2,节点0.12.0,win8 x64.

Jac*_*Guy 9

您的代码看起来很好,因此相等测试必须失败的原因是因为字符串不相等.确保环境变量开发字符串中没有任何额外的字符,如空格.

  • Ahaha是的J4G,你是完全正确的,我是通过带有ET NODE_ENV =开发和节点server.js的.bat文件启动服务器的,这之前的lil空间&实际上被计为'开发'字符串中的空格,已删除,正在工作,谢谢你,这个问题很简单,同时也很简单.PS:完美犯罪XD (3认同)
  • 我通过修剪结果字符串来纠正这个问题.`var env =(process.env.NODE_ENV ||'development').trim();` (3认同)

小智 8

我在Windows模式下遇到了同样的问题.在linux上我不确定.这个问题是由"开发"和"&"字符之间的空格引起的.您可以通过删除命令中的空格来修复.例:SET NODE_ENV=development& node server.js