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
        }
    })
}