EDIT:
如果您在Docker文件中正确命名了dev,但它仍然不起作用,则需要在构建项目之前对其进行设置.
我在NextJS
项目中设置和读取环境变量时遇到困难.
我有两个console logs
:
console.log('env', process.env.NODE_ENV);
console.log('backend url', process.env.BACKEND_URL);
不执行任何操作即可运行代码,返回我所期望的结果:
env development
backend url undefined
像这样输出变量:
NODE_ENV=production
BACKEND_URL=url
不仅打印之前的值,还在控制台中显示以下消息:
您在环境中使用非标准的"NODE_ENV"值. 这会导致项目中的不一致,强烈建议 反对.阅读更多: https://nextjs.org/docs/messages/non-standard-node-env
像这样输出:
export NODE_ENV=production
export BACKEND_URL=url
也会打印相同的信息,包括警告.
这样跑NodeJS
:
BACKEND_URL=url NODE_ENV=production npm run dev
打印相同.echo
对var进行echo
打印正确的值.
不仅仅是console.logs
,我try 在代码的其他部分使用这些值,它们的作用就好像这些值仍然是development
和undefined
一样.
我还try 过.env
文件:
NODE_ENV=production
BACKEND_URL=url
我可以看到它正在被读取,因为当我启动NextJS
服务器时,我看到以下内容:
next dev -p 8080
▲ Next.js 14.1.4
- Local: http://localhost:8080
- Environments: .env
当该文件不存在时,显示Environment: .env
的行不会出现.
最后,我判断了~/.bashrc
和~/.zshrc
,它们没有提及NODE_ENV
或BACKEND_URL
.
可能会发生什么?