简体   繁体   English

process.env.NODE_ENV仍在开发中,但仍显示出意外的行为

[英]process.env.NODE_ENV is in development still it shows unexpected behivour

I'm running my node server in development environment but in my server file it shows unexpected behaviour 我在开发环境中运行节点服务器,但在服务器文件中却显示意外行为

my script is as fallows: 我的脚本是休假:

var env = process.env.NODE_ENV;
console.log("------------------------------");
console.log("envenv",typeof env,env);
console.log("0",typeof env);
console.log("00",env);
console.log("2",env.toString()=='development');
console.log("3",""+env.toString()=='production');
console.log("2",env==='development');
console.log("3",env=="production");
console.log("------------------------------");

but it gives following output 但它给出以下输出

------------------------------
envenv string 'development'
0 string
00 'development'
2 false
3 false
2 false
3 false
------------------------------

When I tried any of following it worked fine 当我尝试以下任何一项时,都可以正常工作

var env = process.env.NODE_ENV.trim(); 
var env = process.env.NODE_ENV.toLowerCase();
var env = process.env.NODE_ENV.replace("","");

.............

or any method other then toString() which are in prototype of String class It worked fine 或String类原型中的toString()以外的任何方法

The environment variable NODE_ENV contains superfluous ' . 环境变量NODE_ENV包含多余的' Something went wrong when setting the environment variable. 设置环境变量时出了点问题。 For windows system use 对于Windows系统使用

> SET NODE_ENV=development

instead of 代替

> SET NODE_ENV='development'

That should fix the issue. 那应该解决问题。

To get the current value of NODE_ENV printed on the command line use 要获取在命令行上打印的NODE_ENV的当前值,请使用

> echo %NODE_ENV%

That should print 那应该打印

> development

Without any " or ' 没有任何“或”

How do you set the NODE_ENV ? 您如何设置NODE_ENV I'm working on windows and I've just spent some time fighting the same problem and discovered that it was because my npm script looked like SET NODE_ENV=production && do everything else so NODE_ENV was actually containing the whitespace as the last character which for some reason wasn't displayed in a console (I've done kind of the same set of tests as yours, but I also checked lengths of my strings and discovered that NODE_ENV is one symbol wider than it should be). 我在Windows上工作,我花了一些时间解决相同的问题,发现那是因为我的npm脚本看起来像SET NODE_ENV=production && do everything else所以NODE_ENV实际上包含空格作为最后一个字符,某些原因未在控制台中显示(我完成了与您相同的一组测试,但是我还检查了字符串的长度,发现NODE_ENV比应有的符号宽了一个符号)。 Changing my script to SET NODE_ENV=production&& do everything else solved the issue. 将我的脚本更改为SET NODE_ENV=production&& do everything else解决SET NODE_ENV=production&& do everything else问题。

console.log("00",env); 的console.log( “00”,ENV);

this should print 00 development instead of 00 'development' 这应该打印00 development而不是00 'development'

You should set your env again. 您应该再次设置环境。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM