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 在代码的其他部分使用这些值,它们的作用就好像这些值仍然是developmentundefined一样.

我还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_ENVBACKEND_URL.

可能会发生什么?

推荐答案

如果您在前端调用env个变量(我假设是这样),则必须在变量上添加NEXT_PUBLIC_前置.

在此处查看官方文档的更多信息- https://nextjs.org/docs/app/building-your-application/configuring/environment-variables#bundling-environment-variables-for-the-browser

Node.js相关问答推荐

try 使用Puppeteer抓取Twitter时数组空

如何解决无法获得本地颁发者证书的问题

Mongoose更新许多不使用数组作为筛选器来更新记录

在Nest.Js中,如何发送带有表单数据的正文请求并应用正文请求验证.附加的文件是可选的

从MongoDB获取Tree数据

如何在Reaction应用程序中查看存储的斑点图像?

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

try 插入重复的邮箱时,mongoDB DuplicateKey 错误未定义

yarn 安装失败,因为 node-gyp 正在寻找过时的 node 版本标头

在 React 和 Socket.io 中使用 Effect 钩子重新渲染两次

Nodejs mongoose 在一个查询中从多个集合中获取结果

使用 firebase 函数 api 运行套接字(相同的端口创建问题)

users.watch(在 gmail google api 中)如何收听通知?

node和mongoDB聚合数据时的输入字段函数

带有 node.js 和 express 的基本网络服务器,用于提供 html 文件和assets资源

在 Node.js 中的两个不同进程之间进行通信

如何为 node.js 服务器分配域名?

mongo 可以 upsert 数组数据吗?

Node.js - 使用异步库 - 带有对象的 async.foreach