开始使用 vue cli 3 并遇到了一个我似乎找不到答案的用例。
如何通过公开 JSON 对象的 .env 文件(即 .env.development、.env.production 等)设置环境变量?此外,有没有办法将外部文件内容加载到环境变量中(即要求)?
感谢帮助!
我想出了一个解决方案来解决我自己的问题......
尽管前面的答案是可行的,但我不想每次我想在环境变量中使用 JSON 时都使用 JSON.parse。
我采用的方法是在每个特定于环境的文件(即 .env-development、.env-production、.env-test)中存储一个指向包含 JSON 的文件的文件路径。例如...
VUE_APP_JSON_FILE=./.env.development.json-data
该文件将包含原始 JSON...
然后在我的 vue.config.js 中,我使用 webpack DefinePlugin 加载文件并通过全局变量使其可用。例如...
new webpack.DefinePlugin({
VUE_APP_JSON: JSON.stringify(process.env.VUE_APP_JSON_FILE)
})
定义新变量将使 json 作为一个对象可用,在整个应用程序中我可以简单地引用 VUE_APP_JSON.property。这使我不必在整个应用程序中都使用 JSON.parse 变量。
你可以 stringObj = JSON.stringfy(YourJson),然后把这个字符串保存在 VUE_APP_SOME_KEY_NAME 里面。
但是当你使用它时,你必须先 JSON.parse() 它。
因此,您不能将 json 对象直接存储在键值 .dotEnv 文件中。
另一种选择是基于 process.env.NODE_ENV 加载这些 json 文件。
like: require (`config.${process.env.NODE_ENV}.js)
.
您应该使用点(as.env.production
或)区分哪个配置文件.env.development
,格式必须是 KEY=value,您不能在此处放置 json 对象,只能放置字符串,但您可以JSON.parse
在代码中使用来反序列化文件中的任何字符串。
Vue cli 将只允许访问以VUE_APP_
和访问开头的环境变量,process.env.VUE_APP_SECRET
您可以在文档中找到它以及更多内容