为什么我的 package.json 里 script 脚本在 Windows 上跑不起来?
我在 macOS 上写的 npm script 换到 Windows 后就报错了,明明命令看起来没问题啊?比如下面这个 dev 脚本:
{
"scripts": {
"dev": "NODE_ENV=development webpack serve --open"
}
}
在 Windows PowerShell 里一运行就提示“NODE_ENV 不是内部或外部命令”,但同事用 Mac 就完全正常。我试过改成 cross-env,但不确定是不是必须加,而且不想为了兼容多装依赖……有没有更简单的办法?
NODE_ENV=development来设置环境变量,但在 Windows 上,这种写法就不行了。解决这个问题的方法有几个,我们来逐一看看。你提到不想增加额外的依赖,那我们先来看看能不能不依赖第三方库来解决。
方法一:使用 Windows 的 set 命令
Windows 有一个
set命令可以用来设置环境变量,我们可以在命令前面加上set NODE_ENV=development &&来实现类似的效果。修改后的 script 如下:这样,在运行
npm run dev时,会先设置NODE_ENV环境变量为development,然后再运行webpack serve --open。方法二:使用 npm 的 cross-env 库
虽然你说不想增加依赖,但有时候这可能是最简单也是最有效的方法。
cross-env是一个可以让不同操作系统统一设置环境变量的小工具。安装方法也很简单,只需要运行:然后将 script 修改为:
这样,无论是 macOS 还是 Windows,都可以通过
npm run dev来启动开发服务器了。选择哪个方法?
- 方法一 对于不想增加额外依赖的人来说是个好选择,但是当你需要在不同的脚本中多次设置环境变量时,可能会显得比较繁琐。
- 方法二 虽然需要增加依赖,但是会让你的项目在不同平台上更加一致,也更容易维护。
希望这些信息能帮到你。这里需要注意的是,环境变量在不同的操作系统上的处理方式不同,所以遇到这类问题时,通常需要针对不同的平台进行相应的调整。