Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用process.env变量在Web包中设置别名_Javascript_Webpack - Fatal编程技术网

Javascript 无法使用process.env变量在Web包中设置别名

Javascript 无法使用process.env变量在Web包中设置别名,javascript,webpack,Javascript,Webpack,内置\webpack.base.conf.js 这项工作: resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), 'api-client': process.env.VUE_APP_API_CLIENT === 'mock' ? resolve('src/a

内置\webpack.base.conf.js 这项工作:

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'api-client': process.env.VUE_APP_API_CLIENT === 'mock'
            ? resolve('src/api/mock')
            : resolve('src/api/server')
    }
  },
但这并不是:

resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      'vue$': 'vue/dist/vue.esm.js',
      '@': resolve('src'),
      'api-client': resolve('src/api/' + process.env.VUE_APP_API_CLIENT)
    }
  },
运行
npm run dev
时出错

This dependency was not found:
* api-client in ./src/store/index.js
下面是
config\prod.env.js

'use strict'
module.exports = {
  NODE_ENV: '"production"',
  VUE_APP_API_CLIENT: '"server"'
}
config\dev.env.js

'use strict'
const merge = require('webpack-merge')
const prodEnv = require('./prod.env')

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  VUE_APP_API_CLIENT: '"mock"'
})
如何使用第一个代码示例中的环境变量


谢谢。

webpack.base.conf
加载后,
config/dev.env.js
config/prod.env.js
似乎分别加载到
webpack.dev.conf.js和
webpack.prod.conf.js
中,因此,当我在
webpack.base.conf
中设置别名时,我声明的env变量是未知的。奇怪的是,process.env.NODE_env在那个地方并不陌生,所以我最终使用了它:

const isProduction = process.env.NODE_ENV === 'production'
然后将别名声明为:

alias: {
  'vue$': 'vue/dist/vue.esm.js',
  '@': resolve('src'),
  'api-client': resolve(`src/api/${isProduction ? 'server' : 'mock'}`)
}

您确定它在第一个示例中工作正常,并且不总是返回到
resolve('src/api/server')
?@George,您是对的。。。它不能正常工作,它返回到“src/api/server”。似乎process.env.VUE_APP_API_CLIENT在该上下文中无效。dotenv包可以解决您的问题@juancaciedo,谢谢,但我很好奇为什么它不起作用。