Nuxt 3静态生成(nuxt生成)不处理~/server/api路由

问题描述 投票:0回答:1

我正在开发一个 Nuxt 3 应用程序,主要是静态内容,但我有一个与 Pipedrive CRM 交互的表单提交。在开发过程中(

npx nuxi dev
),一切都很完美。当我尝试使用
nuxt generate
静态生成网站时,问题就出现了。

具体内容如下:

我有一个表单组件,在提交后,它会从可组合项 (~/composables/pipedrive.ts) 调用函数

sendPipedriveLead

可组合项中的函数对路由进行await $fetch 调用

/api/createLead

此路由的服务器端逻辑位于

~/server/api/createLead
中。这遵循 Nuxt 的新目录结构,可以使用
~/server/api
中的文件创建服务器端路由。在该路由/文件中,我们完成其余的操作,包括另一个 $fetch 到 Pipedrive 的 API URL。

在开发模式下运行时,我可以看到服务器正确处理该路由。一切都在那里完美地运作。然而,在运行

npx nuxi generate --dotenv .env.local
然后
npx serve .output/public
(基本上是
nuxt generate
)并提供静态文件 (
npx serve .output/public
) 后,我在提交并尝试
/api/createLead
路线时收到 404 错误。

错误如下:

HTTP 10/5/2023 3:33:20 PM ::1 POST /api/createLead
HTTP 10/5/2023 3:33:20 PM ::1 Returned 404 in 1 ms

根据我的理解,

~/server/api
目录用于基于服务器的路由,仅当有活动服务器运行时才能访问。鉴于
nuxt generate
生成一个没有活动服务器的完全静态站点,似乎这些路由在生成后无法访问。是这样吗?

如何维护表单提交的服务器端路由功能,同时仍然利用

nuxt generate
为网站的其余部分带来的性能优势? Nuxt 3 中是否有推荐的方法来处理这种情况?

nuxt.js nuxt3
1个回答
0
投票

我遇到了类似的问题,但对于共享主机,它不起作用,如果您使用共享主机并且不需要修复反向代理或 .htaccess 文件。所以我将该项目移至 VPS 那里提供服务。

如果您需要访问公用文件夹内容,这也会失败。当详细讨论这个问题时,我将与您分享 discord 线程,我使用 api 路由解决了它。

© www.soinside.com 2019 - 2024. All rights reserved.