1

开始使用 vue cli 3 并遇到了一个我似乎找不到答案的用例。

如何通过公开 JSON 对象的 .env 文件(即 .env.development、.env.production 等)设置环境变量?此外,有没有办法将外部文件内容加载到环境变量中(即要求)?

感谢帮助!

4

3 回答 3

2

我想出了一个解决方案来解决我自己的问题......

尽管前面的答案是可行的,但我不想每次我想在环境变量中使用 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 变量。

于 2018-10-15T11:42:32.103 回答
1

你可以 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)

于 2018-10-05T06:00:23.610 回答
-1

.您应该使用点(as.env.production或)区分哪个配置文件.env.development,格式必须是 KEY=value,您不能在此处放置 json 对象,只能放置字符串,但您可以JSON.parse在代码中使用来反序列化文件中的任何字符串。

Vue cli 将只允许访问以VUE_APP_和访问开头的环境变量,process.env.VUE_APP_SECRET

您可以在文档中找到它以及更多内容

于 2018-10-04T18:04:53.277 回答