我的项目设置是这样的:
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-configurationhttps://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/