API 路由中未定义的 NextJS 环境变量
NextJS environment variable undefined in API route
我正在使用 NextJS v 10.0.9。我在项目 as described in the docs 的根目录中创建了一个 .env.development.local
文件。内容:
API_SERVER=http://127.0.0.1:5000/map/abc123
在 API 路线中:
pages/api/objects.js
export function getObjects() {
console.log(process.env.API_SERVER)
}
但是当我 运行 带有 next dev
的应用程序时,它会打印 undefined
。自 defining/changing 变量以来,我已经多次重新启动服务器,但总是未定义。我还尝试添加一个 NEXT_PUBLIC_
前缀,这不是必需的,也不是我们想要的,但我想看看会发生什么。结果:没有变化。我也试过使用 .env.local
.
我做错了什么?
更新: 我在 API 路线上发现了这个 line in the docs:“要使 API 路线正常工作,您需要导出一个作为默认功能(a.k.a 请求处理程序),然后接收以下参数:req、res.
所以我将 API 路由中的代码修改为:
export default function getObjects(req, res) {
console.log("test ", process.env.API_SERVER)
}
但是还是不行。我没有 next.config.js
文件,因为据我所知,从 NextJS 9.4 开始就不再需要了。
我也尝试在文件中声明并使用一个全新的变量 (TEST=value
),但是当我尝试在 API 路由中使用它时,这也是未定义的。
问题是我如何调用 API 路由。当我直接在浏览器中访问它时,环境变量可用并在控制台中打印得很好。但是我一直在关注一个不是为 NextJS 编写的教程,它让我直接导入 API 函数:
// WRONG WRONG WRONG
import getObjects from './api/objects'
// [...]
export default function MyApp({}) {
useEffect(() => {
getObjects().then(data => {
// do stuff
}
})
}
我正在使用 NextJS v 10.0.9。我在项目 as described in the docs 的根目录中创建了一个 .env.development.local
文件。内容:
API_SERVER=http://127.0.0.1:5000/map/abc123
在 API 路线中:
pages/api/objects.js
export function getObjects() {
console.log(process.env.API_SERVER)
}
但是当我 运行 带有 next dev
的应用程序时,它会打印 undefined
。自 defining/changing 变量以来,我已经多次重新启动服务器,但总是未定义。我还尝试添加一个 NEXT_PUBLIC_
前缀,这不是必需的,也不是我们想要的,但我想看看会发生什么。结果:没有变化。我也试过使用 .env.local
.
我做错了什么?
更新: 我在 API 路线上发现了这个 line in the docs:“要使 API 路线正常工作,您需要导出一个作为默认功能(a.k.a 请求处理程序),然后接收以下参数:req、res.
所以我将 API 路由中的代码修改为:
export default function getObjects(req, res) {
console.log("test ", process.env.API_SERVER)
}
但是还是不行。我没有 next.config.js
文件,因为据我所知,从 NextJS 9.4 开始就不再需要了。
我也尝试在文件中声明并使用一个全新的变量 (TEST=value
),但是当我尝试在 API 路由中使用它时,这也是未定义的。
问题是我如何调用 API 路由。当我直接在浏览器中访问它时,环境变量可用并在控制台中打印得很好。但是我一直在关注一个不是为 NextJS 编写的教程,它让我直接导入 API 函数:
// WRONG WRONG WRONG
import getObjects from './api/objects'
// [...]
export default function MyApp({}) {
useEffect(() => {
getObjects().then(data => {
// do stuff
}
})
}