带生成的 Nuxt 服务器中间件

Posted

技术标签:

【中文标题】带生成的 Nuxt 服务器中间件【英文标题】:Nuxt server middleware with generate 【发布时间】:2021-03-24 01:41:48 【问题描述】:

我想我误解了 nuxt 服务器中间件。我有一个带有单个文件的 api 目录,该文件启动 express 并将记录写入 mysql 数据库。一切都按预期在 dev 中运行,但是在 nuxt 生成之后,该端点总是返回 404。

您可以将 nuxt generate 与在服务器上运行的内部 API 一起使用吗?我会使用 axios 来达到这个端点的价值,但我怀疑这会有所作为。

来自 Nuxt 配置:


  target: static, 
  serverMiddleware: [ path: '/api', handler: '~/api/index.js' ]

【问题讨论】:

【参考方案1】:

服务器中间件基本上允许您在服务器上运行您自己的代码 nuxt 在target: 'server' 模式下为您旋转。因此,您的方法在静态模式下不起作用,因为没有服务器运行您的中间件。您只提供静态文件。在开发模式下,您在本地运行服务器,这就是您的中间件在那里正常工作的原因。

要让它在生产中工作,您有两种选择:

target: 'server' 模式运行nuxt,而不是生成静态文件 单独启动您的 express 服务器,而不是在 nuxt 中使用服务器中间件

希望您现在了解服务器中间件的工作原理,并为您的项目做出正确的决定!

【讨论】:

谢谢弗洛里安,明白了。但是,现在我如何在没有 dist 目录的情况下运行该站点?它说在本地主机上侦听,但我希望它从 mynuxtsite.com 之类的本地虚拟主机运行? @MattKaye 我想你的意思是说“没有 dist 目录”以target: 'server'; 模式运行。我没有设置虚拟主机的经验,但你可以看看docs。

以上是关于带生成的 Nuxt 服务器中间件的主要内容,如果未能解决你的问题,请参考以下文章

nuxt实践

Nuxt 服务器中间件发布请求不起作用

使用 axios 和 nuxt 进行服务器和客户端 API 调用的不同 baseURL

如何生成带有目标的路由:Nuxt 中的服务器渲染?

Nuxt 生成返回 404 错误

无法在我的 Nuxt 项目中使用“node”命令导入 ES 模块