[英]Can't use .env file in vue js while running cross-env NODE_ENV=development webpack-dev-server --open --hot
我正在尝试将 .env 文件用于局部变量,但是当我尝试对它们进行控制台时,它显示为未定义。
下面是我的 .env 文件(位于我的项目的根目录)
VUE_APP_STRAPI_HOST=http://localhost:1337/
我在尝试控制台记录时使用以下内容:
console.log(process.env.VUE_APP_STRAPI_HOST)
这是我再次在命令行中运行的内容:
cross-env NODE_ENV=development webpack-dev-server --open --hot
我在想这可能与跨环境有关吗?
简短:
require('dotenv').config()
特尔;博士:
您创建.env
文件的事实与环境变量无关。 在 bash(或任何其他 sh 系统)中,您需要
export VUE_APP_STRAPI_HOST=http://localhost:1337/
; 然后运行你的过程VUE_APP_STRAPI_HOST=http://localhost:1337/ node webpack-dev-server --open --hot
。 只需创建一个.env
文件(以及具有任何其他名称的文件)不会将其中的变量神奇地导出到 env 变量到您的进程。 这同样适用于cross-env
,因为我在这个包中没有看到任何让它这样做的文档。
你可能想要的是dotenv :
require('dotenv').config()
但不要让魔法误导你。 此命令仅使用您的配置覆盖全局变量process.env
。
您还可以做的是读取.env
文件并使用任何 shell 脚本将其中的所有内容导出到环境变量,如下所示:
source_it() {
while read -r line; do
if [[ -n "$line" ]] && [[ $line != \#* ]]; then
export "$line"
fi
done < $1
}
source_it .env
然后像以前一样运行你的过程:
node ./node_modules/.bin/cross-env NODE_ENV=development webpack-dev-server --open --hot
聚苯乙烯
另一件事是,如果您试图从浏览器中查看console.log
,它也与运行 webpack-dev-server 的节点进程无关。 为了使您的process.env
变量对您的浏览器是全局的,您可以使用类似DefinePlugin 的东西
感谢@deathangel908,我想出了这个解决方案:
webpack.config.js
module.exports.plugins = (module.exports.plugins || []).concat([
new webpack.EnvironmentPlugin({
STRAPI_HOST: 'foobar'
})
])
使用 webpack Environmentplugin 的缺点是你不能使用 .env 环境文件,比如 .env.development。 Webpack 有一个插件,但在我的项目中它不断抛出一个我无法解决的错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.