docker - Nextjs 环境变量始终未定义

标签 docker environment-variables next.js

我的项目设置是这样的:

project-ci (only docker)
  nextjs
  backend
暂存和生产是相同的,所以我传入 docker-compose.yml仅暂存此参数的文件(两个环境都是先使用这些命令构建的 npm run build 然后 npm run start )
args:
    NEXT_PUBLIC_URL: arbitrary_value
Dockerfile nextjs 的把这些命令
ARG NEXT_PUBLIC_URL
ENV NEXT_PUBLIC_URL=$NEXT_PUBLIC_URL
因此变量将可以在 nextjs 中使用 process.env.NEXT_PUBLIC_URL 访问.
到目前为止,如果我尝试 console.log(process.env.NEXT_PUBLIC_URL)index.js该值始终为 undefined .任何想法出了什么问题,还检查了文档,但结果仍然是 undefined https://nextjs.org/docs/api-reference/next.config.js/runtime-configuration
https://nextjs.org/docs/api-reference/next.config.js/environment-variables

最佳答案

您可以访问env使用公共(public)运行时配置属性的变量:
next.config.js

module.exports = {
    publicRuntimeConfig: {
      NEXT_PUBLIC_URL: process.env.NEXT_PUBLIC_URL,
    }
};
然后:
import getConfig from "next/config";
const { publicRuntimeConfig } = getConfig();
console.log(publicRuntimeConfig.NEXT_PUBLIC_URL);
如果它不起作用,请确保在 docker 容器中创建 env 变量

关于docker - Nextjs 环境变量始终未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64309158/

相关文章:

tomcat - Grails 不读取 tomcat7 环境变量

javascript - NextJS 服务器文件中的 typescript 错误

reactjs - 如何将 Material UI v5 连接到 Next JS v12?

reactjs - React.js Docker - 找不到模块

node.js - 如何将 docker 容器端口公开给另一个容器

Docker 卷 : persist data on a remote host

reactjs - NextJS 13.4 与 aws amplify 身份验证器相关的问题

json - 使用 jq 从 bash 中管道分隔的键和值创建 JSON

java - 如何为每个 Windows Azure 虚拟机操作系统设置一些唯一标识符

python - 如何直接在python代码中的tesseract中配置OMP_THREAD_LIMIT以禁用多处理?