Vue我可以设置process.env.NODE_ENV

And*_*rew 2 npm webpack vue.js axios

关于此处记录的模式和环境变量

https://cli.vuejs.org/guide/mode-and-env.html#modes

例如,我很困惑为什么我不能将以下变量设置为模拟。正如文档似乎所说,这将是您传入的模式!

process.env.NODE_ENV
Run Code Online (Sandbox Code Playgroud)

我在package.json中创建了以下 server-mock 命令字符串,如下所示

"serve-mock": "vue-cli-service serve --mode mock"
Run Code Online (Sandbox Code Playgroud)

但当我跑步时

npm run server-mock
Run Code Online (Sandbox Code Playgroud)

process.env.NODE_ENV仍然设置为development而不是mock。我应该在.env.mock文件中设置它吗?我认为它会根据作为模拟传入的模式来设置?

ton*_*y19 6

Vue CLI 的serve命令使用mode选项从特定于模式的.env文件加载环境变量。它还设置NODE_ENV了三种标准模式一(test,development或production)仅如果尚未设置。但是,如果指定的模式不是标准模式(如mock),Vue CLI默认为development。

所以,你可以设置NODE_ENV=mockinside.env.mock绕过NODE_ENV上面提到的设置。

或者,您可以在 *nix shell 中的 NPM 脚本的命令行上进行设置NODE_ENV:

{
  "scripts": {
    "serve-mock": "NODE_ENV=mock vue-cli-service serve"
  }
}
Run Code Online (Sandbox Code Playgroud)

对于跨平台解决方案(包括 Windows),您可以安装cross-env(按照评论中的建议),并按如下方式编辑您的 NPM 脚本:

{
  "scripts": {
    "serve-mock": "cross-env NODE_ENV=mock vue-cli-service serve"
  }
}
Run Code Online (Sandbox Code Playgroud)