Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使Netlify在生成期间创建.env文件?或者如何让dotenv拾取系统变量?_Node.js_Webpack_Netlify_Dotenv - Fatal编程技术网

Node.js 如何使Netlify在生成期间创建.env文件?或者如何让dotenv拾取系统变量?

Node.js 如何使Netlify在生成期间创建.env文件?或者如何让dotenv拾取系统变量?,node.js,webpack,netlify,dotenv,Node.js,Webpack,Netlify,Dotenv,我在当地的工作情况如下: // .env MY_ENV='test' MY_URL='http://192.168.0.16' //网页包配置 ... 插件:[ 新的webpack.DefinePlugin({ 'process.env':JSON.stringify(dotenv.config().parsed) }) ] 但是当我试着用Netlify使用MY_ENV和MY_URL时,它们是未定义的。我已经在Netlify仪表板的“环境”选项卡上设置了它们 我怀疑dotenv查找的是.en

我在当地的工作情况如下:

// .env
MY_ENV='test'
MY_URL='http://192.168.0.16'
//网页包配置
...
插件:[
新的webpack.DefinePlugin({
'process.env':JSON.stringify(dotenv.config().parsed)
})
]
但是当我试着用Netlify使用
MY_ENV
MY_URL
时,它们是
未定义的。我已经在Netlify仪表板的“环境”选项卡上设置了它们

我怀疑
dotenv
查找的是
.env
文件,而不是系统变量

我知道插件
dotenv-webpack
允许您使用系统变量,但是
dotenv-webpack
是不允许的,因为我需要在浏览器中使用这些变量(它们不是真正的秘密)

有没有办法让Netlify在本地创建一个
.env
,这样
dotenv
就可以获取它?或者有没有办法让
dotenv
使用系统变量


谢谢

只需使用访问环境变量即可

process.env.MY_ENV
process.env.MY_URL
不要覆盖您的进程。env

const myenv = dotenv.config().parsed;

plugins: [
  new webpack.DefinePlugin({
    MY_ENV: myenv.MY_ENV || process.env.MY_ENV,
    MY_URL: myenv.MY_ENV || process.env.MY_ENV,
  })
]

只需使用访问环境变量

process.env.MY_ENV
process.env.MY_URL
不要覆盖您的进程。env

const myenv = dotenv.config().parsed;

plugins: [
  new webpack.DefinePlugin({
    MY_ENV: myenv.MY_ENV || process.env.MY_ENV,
    MY_URL: myenv.MY_ENV || process.env.MY_ENV,
  })
]

嘿我已经这样做了;问题是,
dotenv
只拾取
.env
中的变量。但是,Netlify没有
.env
,因为
.env
不会被推送到Github。我想知道
dotenv
是否可以获取Netlify的环境变量:/@kibe dotenv是一种使
.env
文件感觉像常规环境变量的机制。因此,如果使用真实的环境变量,则根本不需要dotenv。dotenv是一种解决方法。@kibe您可以发布您的示例env吗file@kibe您正在将构建部署到Netlify,因此您应该已经设置了URL,不会在Netlify上运行构建过程。你也可以看看。阅读@TusharGupta curioustushar对,我试过dotenv网页包,但以前没有用过;结果表明,像
{MY_ENV}=process.ENV
这样的对象销毁由于某种原因不起作用。现在一切都好了。谢谢嘿我已经这样做了;问题是,
dotenv
只拾取
.env
中的变量。但是,Netlify没有
.env
,因为
.env
不会被推送到Github。我想知道
dotenv
是否可以获取Netlify的环境变量:/@kibe dotenv是一种使
.env
文件感觉像常规环境变量的机制。因此,如果使用真实的环境变量,则根本不需要dotenv。dotenv是一种解决方法。@kibe您可以发布您的示例env吗file@kibe您正在将构建部署到Netlify,因此您应该已经设置了URL,不会在Netlify上运行构建过程。你也可以看看。阅读@TusharGupta curioustushar对,我试过dotenv网页包,但以前没有用过;结果表明,像
{MY_ENV}=process.ENV
这样的对象销毁由于某种原因不起作用。现在一切都好了。谢谢是否在构建期间或应用程序启动时运行webpack?webpack是否在prod中运行过?如果没有,环境变量改变基本上已经太晚了,它们会在构建期间烘焙到您的构建中。@Evert它同时在prod和dev中运行;我看到您的评论,您在使用Netlify时不需要
dotenv
。所以Netlify已经设置好了,对吗?但是我如何在代码中访问它们呢?我的意思是dotenv包允许您在文件中指定环境变量。Dotenv是一种替代常规环境变量的黑客,与netlify无关。是否在构建期间或应用程序启动时运行webpack?webpack是否在prod中运行过?如果没有,环境变量改变基本上已经太晚了,它们会在构建期间烘焙到您的构建中。@Evert它同时在prod和dev中运行;我看到您的评论,您在使用Netlify时不需要
dotenv
。所以Netlify已经设置好了,对吗?但是我如何在代码中访问它们呢?我的意思是dotenv包允许您在文件中指定环境变量。Dotenv是一种替代常规环境变量的黑客,与netlify无关。