Node.js 云运行服务器中的环境变量不可访问
所以 我正在使用NUXT 我正在部署到谷歌云运行 我在开发中使用dotenv包和一个.env文件,效果很好。 我在Nuxt上的开发服务器中使用命令process.env.VARIABLE_NAME,它工作得很好,我确保.env在git ignore中,这样它就不会被上传 然而,我随后使用谷歌云运行部署我的应用程序。。。我确保转到Environments选项卡并添加与.env文件中完全相同的变量 但是,这些变量返回时是未定义的 我已经尝试了各种方法来解决这个问题,但我唯一能做的就是将我的.env与项目一起上传——我不希望这样做,因为NUXT在客户端js中公开了这个文件 有人遇到这个问题,知道如何解决吗 DOCKERFILE: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与
# 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'。可能是这样吗?