我使用 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
。自从定义/更改变量以来,我已经多次重新启动服务器,但总是未定义。我还尝试添加一个 NEXT_PUBLIC_
前缀,这应该不是必需的,也不是我们想要的,但我想看看会发生什么。结果:没有变化。我也试过使用 .env.local
。
我做错了什么?
更新:我在 API 路由上发现了这个 line in the docs:“要使 API 路由正常工作,您需要将函数导出为默认值(又名请求处理程序),然后该函数接收以下参数: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 路由中使用它时,这也是未定义的。
答案 0 :(得分:0)
问题在于我如何调用 API 路由。当我直接在浏览器中访问它时,环境变量可用并且在控制台中打印得很好。但是我一直在关注一个不是为 NextJS 编写的教程,它让我直接导入 API 函数:
// WRONG WRONG WRONG
import getObjects from './api/objects'
// [...]
export default function MyApp({}) {
useEffect(() => {
getObjects().then(data => {
// do stuff
}
})
}