在 VueJS 中更改环境变量后,有没有办法热重新加载我的 Vue 页面?
Is there a way to Hot Reload my Vue Page after changing an Environment Variable in VueJS?
我想为我的应用程序设置不同的模式,因此我创建了不同的 .env
文件来存储我的环境变量。使用这些变量工作正常,唯一的问题是当我更改 .env
文件中的某些内容时,我必须重新启动整个应用程序。
我尝试将环境变量外包到一个 .json
文件中以使其与热重载一起工作,但没有用。
这是我的 .env
文件:
NODE_ENV=development
VUE_APP_JSON_FILE=./m.json
我的vue.config.js
:
const webpack = require("webpack");
module.exports = {
configureWebpack: {
plugins: [
new webpack.DefinePlugin({
VUE_APP_JSON: JSON.stringify(require(process.env.VUE_APP_JSON_FILE))
})
]
}
我的 .json
文件:
{
"logo": {
"picture": "test.jpg",
}
}
现在我可以像 VUE_APP_JSON.logo.picture
一样调用 .json 中的变量。
正如我所说,所有这些都有效,但更改 .env 文件或 .json 文件中的变量不会触发热重载。
任何人都知道如何实现这一目标?提前致谢。
TL;DR;
不,你不能
根据我的经验,你做不到,而且永远做不到。因为 .env 文件“有点”被缓存(我真的不知道他们怎么称呼它)但是一旦你编译了你的应用程序你就永远无法更改 .env 然后期待热重载
.env 变量在编译代码本身中静态使用,而不是作为变量,因此在更改 .env 文件中的值时,您没有更改代码上的任何内容。您确实需要再次重新编译项目以更新编译代码正在使用的静态数据。
示例:
你有一个代码:
var Environment = process.env.APP_ENV
并且您的 .env 文件有
APP_ENV=local
你的编译代码看起来像这样
var Environment = 'local'
更新..
您甚至无法 vue.config.js 进行热重载。当您更改该文件上的任何内容时,您也确实需要重新编译.. 因为 vue.config.js 是编译器本身的配置。 webpack 是编译器,vue.config.js 是它的配置。
运行 构建然后返回到您的开发版本。它将应用更改。
我想为我的应用程序设置不同的模式,因此我创建了不同的 .env
文件来存储我的环境变量。使用这些变量工作正常,唯一的问题是当我更改 .env
文件中的某些内容时,我必须重新启动整个应用程序。
我尝试将环境变量外包到一个 .json
文件中以使其与热重载一起工作,但没有用。
这是我的 .env
文件:
NODE_ENV=development
VUE_APP_JSON_FILE=./m.json
我的vue.config.js
:
const webpack = require("webpack");
module.exports = {
configureWebpack: {
plugins: [
new webpack.DefinePlugin({
VUE_APP_JSON: JSON.stringify(require(process.env.VUE_APP_JSON_FILE))
})
]
}
我的 .json
文件:
{
"logo": {
"picture": "test.jpg",
}
}
现在我可以像 VUE_APP_JSON.logo.picture
一样调用 .json 中的变量。
正如我所说,所有这些都有效,但更改 .env 文件或 .json 文件中的变量不会触发热重载。
任何人都知道如何实现这一目标?提前致谢。
TL;DR;
不,你不能
根据我的经验,你做不到,而且永远做不到。因为 .env 文件“有点”被缓存(我真的不知道他们怎么称呼它)但是一旦你编译了你的应用程序你就永远无法更改 .env 然后期待热重载
.env 变量在编译代码本身中静态使用,而不是作为变量,因此在更改 .env 文件中的值时,您没有更改代码上的任何内容。您确实需要再次重新编译项目以更新编译代码正在使用的静态数据。
示例:
你有一个代码:
var Environment = process.env.APP_ENV
并且您的 .env 文件有
APP_ENV=local
你的编译代码看起来像这样
var Environment = 'local'
更新..
您甚至无法 vue.config.js 进行热重载。当您更改该文件上的任何内容时,您也确实需要重新编译.. 因为 vue.config.js 是编译器本身的配置。 webpack 是编译器,vue.config.js 是它的配置。
运行 构建然后返回到您的开发版本。它将应用更改。