Reactjs nextjsapi";第页/api“;不';不能在vercel服务器上工作

Reactjs nextjsapi";第页/api“;不';不能在vercel服务器上工作,reactjs,rest,next.js,serverless,vercel,Reactjs,Rest,Next.js,Serverless,Vercel,大家好,能帮我吗 我试图配置我的伪API来创建一些个人项目,但在我的情况下,使用/pages/API文件夹的方法仅在本地主机中适用,当我部署到Vercel上的服务器时,项目无法找到我的端点 在我的例子中,我使用src/folder方法来开发我的应用程序,我不知道这种结构是否会导致api文件夹出现问题 我曾经尝试并完成的一件事是使用应用程序根目录下的api文件夹(在/src文件夹外)部署到vercel,但该api在localhost上停止工作 此结构适用于本地主机,但不适用于服务器: ├───pu

大家好,能帮我吗

我试图配置我的伪API来创建一些个人项目,但在我的情况下,使用/pages/API文件夹的方法仅在本地主机中适用,当我部署到Vercel上的服务器时,项目无法找到我的端点

在我的例子中,我使用src/folder方法来开发我的应用程序,我不知道这种结构是否会导致api文件夹出现问题

我曾经尝试并完成的一件事是使用应用程序根目录下的api文件夹(在/src文件夹外)部署到vercel,但该api在localhost上停止工作

此结构适用于本地主机,但不适用于服务器:

├───public/
├───src/
    ├───api/
    ├───pages/
    ...
next.config.js
package.json
此结构适用于服务器,但不适用于本地主机:

├───api/
├───public/
├───src/
    ├───pages/
    ...
next.config.js
package.json
这是我用来获取数据的方法:

AXIOS API:

从“axios”导入axios
const api=axios.create({
baseURL:“/api/”
})
导出默认api
SWR吊钩:

从“src/services/api”导入api
从“swr”导入useSWR
函数SwrFetchHook(url:string){
const{data,error}=useSWR(url,异步url=>{
const response=wait api.get(url)
返回响应.data
})
返回{数据,错误}
}
导出默认SwrFetchHook
SWR回调:

const{data}=SwrFetchHook('categories'))
我希望我能解释一下,我这里的问题是如何使用这个功能的最佳方式,因为/src文件夹在nextjs中很常见,但我不知道这是否是api文件夹的真正问题


谢谢

无法100%确定这是否是同一问题。我在构建阶段收到了以下警告:

warn  - Statically exporting a Next.js application via `next export` disables API routes. This command is meant for static-only hosts, and is not necessary to make your application static.
确保在out
package.json
脚本中使用了正确的build命令

我的情况是:

“下一个构建和下一个导出”
需要更改为
“构建”:“下一个构建”

注意:我删除了
&下一次导出

这禁用了静态导出功能,并允许在运行
纱线开始时使用
页面/api
。注意:纱线开始依赖于Vercel构建管道中的构建脚本。因此,除非需要,否则不要覆盖默认设置


同样,在普通的Node/JS项目中,您可以在脚本区域定义一个源文件夹,即
“start”:“/src”
…但是Next.JS会自动执行此操作,因此我认为没有
src
文件是问题所在。我的项目中也有一个
src
文件,这是组织JS项目的一种非常常见的方式(首选方式)。如果使用next,则不必触摸此按钮。

应进入
/pages/api
文件夹。
api
文件夹必须在
pages
文件夹中。谢谢Julio的回答,你是对的,但我的问题是在生产中,当我使用/pages/api上的文件夹时,项目回答404。这听起来不对。你能告诉我你得到的确切错误吗?请求的URL是否正确?确切地说,我在生产环境中的所有端点都返回错误404(未找到),我尝试的方法是将api文件夹移动到project root,它在生产环境中工作,但对我来说似乎不正确,我认为这两个都是(localhost和production)应该使用正确位置的api文件夹
/pages/api/
。您能否从代码中显示一个示例,说明您正在向api路由发出请求?