我正在使用安装了 VueAxios 的标准 Vue starer webpack 模板。我想在使用 dev
命令构建时使用 .env 变量配置 axios。我在 /config/index.js
中设置了所有内容:
const devEnv = require('./dev.env')
module.exports = {
...
host: devEnv.host || 'localhost',
port: devEnv.port || 8080,
...
}
然后我在同一目录中的 dev.env.js
中定义我的主机和端口,一切正常。
const dotenv = require('dotenv').config({path: '../.env'})
let host = process.env.VUE_HOST;
let port = +process.env.VUE_PORT;
module.exports = merge(prodEnv, {
NODE_ENV: '"development"',
host,
port
})
但问题是我无法在我的 Vue 应用程序的 src/main.js
中访问主机值。
如果我尝试这样做,我会收到一个错误
vue 未定义
import axios from 'axios'
import VueAxios from 'vue-axios'
...
Vue.use(VueAxios, axios)
Vue.axios.defaults.baseURL = `http://${process.env.host}:${process.env.port}`;
尽管端口工作正常,但主机没有工作并抛出错误。
原文由 CyberAP 发布,翻译遵循 CC BY-SA 4.0 许可协议
Vue CLI 3 更新
您现在需要做的就是在您的
.env
文件中设置VUE_APP_BASE_URL
。然后你就可以像这样访问它:但更好的解决方案是 配置开发服务器。
以前的解决方案
解决方案非常简单:
webpack.dev.conf.js
插件中为这种情况定义一个特殊变量,为此省略使用process.env
。\src\main.js
定义如下: