我有一个简单的next ssr应用程序与servermiddleware处理一个api端点(/api/contact
)。要部署应用程序,我使用pm2。在开发和生产中运行应用程序(在本地没有pm2),一切都很好。使用pm2将其部署到基本的ubuntu服务器上,api端点变得不可达(404 not found)。
正如这里指出的,中间件不包括在.nuxt
构建中。所以,我确保复制api
目录(我的中间件所在的位置)。
用于pm2部署,ecosystem.config.js
:
module.exports = {
apps: [
{
name: 'App',
exec_mode: 'cluster',
instances: 'max',
script: './node_modules/nuxt/bin/nuxt.js',
args: 'start'
}
]
}
and insidenuxt.config.js
:
serverMiddleware: [
{ path: '/api/contact', handler: '~/api/contact.js' }
]
由于只有通过pm2的部署失败,我认为其他文件不重要。我认为这必须与某种pm2配置有关,以找到api文件夹。
根据我的回答,这里的问题也解决了。
你可能在nuxt.config.js
文件中丢失了一些东西
export default {
ssr: true,
target: 'server',
modules: [
'@nuxtjs/axios',
],
serverMiddleware: [
{ path: '/api', handler: '~/server-middleware/rest.js' },
],
}