Javascript 无法使用process.env变量在Web包中设置别名
内置\webpack.base.conf.js 这项工作: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
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,谢谢,但我很好奇为什么它不起作用。