Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 云运行服务器中的环境变量不可访问_Node.js_Google Cloud Platform_Environment Variables_Nuxt.js_Google Cloud Run - Fatal编程技术网

Node.js 云运行服务器中的环境变量不可访问

Node.js 云运行服务器中的环境变量不可访问,node.js,google-cloud-platform,environment-variables,nuxt.js,google-cloud-run,Node.js,Google Cloud Platform,Environment Variables,Nuxt.js,Google Cloud Run,所以 我正在使用NUXT 我正在部署到谷歌云运行 我在开发中使用dotenv包和一个.env文件,效果很好。 我在Nuxt上的开发服务器中使用命令process.env.VARIABLE_NAME,它工作得很好,我确保.env在git ignore中,这样它就不会被上传 然而,我随后使用谷歌云运行部署我的应用程序。。。我确保转到Environments选项卡并添加与.env文件中完全相同的变量 但是,这些变量返回时是未定义的 我已经尝试了各种方法来解决这个问题,但我唯一能做的就是将我的.env与

所以

我正在使用NUXT 我正在部署到谷歌云运行 我在开发中使用dotenv包和一个.env文件,效果很好。 我在Nuxt上的开发服务器中使用命令process.env.VARIABLE_NAME,它工作得很好,我确保.env在git ignore中,这样它就不会被上传

然而,我随后使用谷歌云运行部署我的应用程序。。。我确保转到Environments选项卡并添加与.env文件中完全相同的变量

但是,这些变量返回时是未定义的

我已经尝试了各种方法来解决这个问题,但我唯一能做的就是将我的.env与项目一起上传——我不希望这样做,因为NUXT在客户端js中公开了这个文件

有人遇到这个问题,知道如何解决吗

DOCKERFILE:

# base node image
FROM node:10

WORKDIR /user/src/app

ENV PORT 8080
ENV HOST 0.0.0.0

COPY package*.json ./

RUN npm install

# Copy local nuxt code to the container
COPY . .

# Build production app
RUN npm run build

# Start the service
CMD npm start
亲切问候,,
Josh在Dockerfile中不需要向环境变量插入值。您可以在部署时通过命令行执行此操作

例如,这里是我使用的Dockerfile

FROM node:10

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

CMD ["npm","start"]
这是app.js文件

    const express = require('express')
    const app = express()
    const port = 8080

    app.get('/',(req,res) => {
        const envtest = process.env.ENV_TEST;
        res.json({message: 'Hello world',
                  envtest});
    });

app.listen(port, () => console.log(`Example app listening on port ${port}`))
要部署,请使用如下脚本:

gcloud run deploy [SERVICE] --image gcr.io/[PROJECT-ID]/[IMAGE] --update-env-vars ENV_TEST=TESTVARIABLE
输出如下所示:

{"message":"Hello world","envtest":"TESTVARIABLE"}
您可以查看官方文档中的更多详细信息:
我终于找到了解决办法

我使用的是NUXTV1.11.x 从等于或大于1.13的版本开始,Nuxt附带运行时配置,这就是您所需要的

在您的nuxt.config.js中:

导出默认值{ publicRuntimeConfig:{ 基本URL:'some' }, privateRuntimeConfig:{ 标记:“一些” } } 然后,您可以访问以下内容:

此.$config.BASE_URL | |上下文.$config.TOKEN
更多详细信息

请包括您的docker文件和一个最小示例,以便我们尝试复制。为您添加了我的docker文件!我只想补充一点,我试过在docker中执行:ENV PL_APP_SECRET=123和ENV PL_APP_SECRET 123,但仍然没有成功!您是否有加载dotenv文件并将值写入env var的工具?如果是这样的话,这个过程是否会清除所有现有的env var is dotenv文件都不存在?我在numxt config.js的顶部有这个文件?const env=require'dotenv'。可能是这样吗?