Node.js 部署时忽略Nuxt边缘服务器中间件路由(错误404)
我正试图在firebase主机上卸载一个SSR nuxt遗留边缘项目。 在开发模式(npm-run-dev)下,一切都可以正常工作。 我正在使用nuxtconfig.js中定义的serverMiddleware/apiNode.js 部署时忽略Nuxt边缘服务器中间件路由(错误404),node.js,firebase,nuxt.js,Node.js,Firebase,Nuxt.js,我正试图在firebase主机上卸载一个SSR nuxt遗留边缘项目。 在开发模式(npm-run-dev)下,一切都可以正常工作。 我正在使用nuxtconfig.js中定义的serverMiddleware/api serverMiddleware: [ bodyParser.json(), session({ secret: 'amdskfmdlkfdklfndfmdfndsmfndfnejnjheheuewytwgssa', resave:
serverMiddleware: [
bodyParser.json(),
session({
secret: 'amdskfmdlkfdklfndfmdfndsmfndfnejnjheheuewytwgssa',
resave: true,
saveUninitialized: false,
cookie: { maxAge: (20 * 60 * 1000), secure: false }
}),
//{ path: '/api', handler: '~/api/index.js' },
'~/api'
]
而my/api/index.js是
const express = require('express')
const bodyParser = require('body-parser');
const router = express.Router()
const app = express();
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ extended: false }));
router.use((req, res, next) => {
Object.setPrototypeOf(req, app.request)
Object.setPrototypeOf(res, app.response)
req.res = res
res.req = req
next()
})
router.post('/confirmlogin', (req, res) => {
console.log('[API] - LOGIN POST', req.body.role)
req.session.userId = req.body.uid
req.session.role = req.body.role
req.session.token = req.body.token
req.session.profile=req.body.profile
res.cookie('access_token', req.body.token, {
maxAge: 3600000,
httpOnly: true
}) /* 1 hour */
return res.json({
status: 'success'
})
})
router.post('/confirmlogout', (req, res) => {
console.log('[API] - LOGOUT POST')
delete req.session.userId
delete req.session.role
delete req.session.token
delete req.session.profile
res.clearCookie('access_token');
return res.json({
status: 'success'
})
})
app.use('/', router);
module.exports = {
path: '/api',
handler: router
}
firebase功能定义为:
const functions = require('firebase-functions');
const { Nuxt } = require('nuxt-legacy-edge');
var express =require("express");
var app=express();
const config = {
dev: false,
buildDir: '.nuxt',
};
const nuxt = new Nuxt(config);
exports.webaffitto = functions.https.onRequest((req, res) => nuxt.render(req, res));
如路由api/confirmlogin和api/confirmlogout中所示,在开发模式下工作良好,但若使用命令投入生产,则
firebase服务--仅功能,托管
或
使用
似乎这些路线丢失了,我得到了404(未找到)
非常感谢您的帮助。您找到解决方案了吗?
firebase deploy