搭建环境时遇NODE_ENV命令不识别错误,添加set后异常求助
解决Windows下NODE_ENV命令报错的问题
嘿,这个坑我太熟了!你遇到的是Windows和Mac/Linux这类类Unix系统环境变量设置语法不兼容的问题,我来给你掰扯清楚怎么解决:
为什么会报错?
Windows的cmd命令行不支持NODE_ENV=development这种直接赋值的写法——这是类Unix系统的专属语法。而你加了set之后控制台直接输出整行命令,是因为你没给set命令和后面的nodemon命令加分隔符,cmd把整句话当成一个字符串输出了,根本没执行后面的启动命令。
三种解决方案任你选
1. 直接在Windows cmd里运行的正确写法
给set命令和后续命令之间加上&&(表示前一个命令执行成功后再执行后面的),写法如下:
set NODE_ENV=development && nodemon -w src --exec "babel-node src --presets es2015,stage-0"
如果不管set命令是否成功都要执行后续命令,把&&换成&就行。
2. 在package.json的scripts里配置Windows专属写法
如果是在项目的package.json里配置启动脚本,要注意转义内部的双引号,写法如下:
"scripts": { "dev": "set NODE_ENV=development && nodemon -w src --exec \"babel-node src --presets es2015,stage-0\"" }
配置完之后直接运行npm run dev就可以了。
3. 跨平台通用方案(强烈推荐)
上面两种方法只能在Windows用,换个系统又要改,太麻烦。推荐用cross-env包统一跨平台的环境变量设置语法:
- 第一步,安装cross-env(开发依赖):
npm install cross-env --save-dev - 第二步,在package.json里配置统一的脚本:
"scripts": { "dev": "cross-env NODE_ENV=development nodemon -w src --exec \"babel-node src --presets es2015,stage-0\"" }
这样不管你是在Windows、Mac还是Linux上运行npm run dev,都不会再出现环境变量相关的报错,一步到位解决跨平台问题!
内容的提问来源于stack exchange,提问作者TikTak
相关产品推荐
相关产品推荐

