Nuxt边缘serverMiddleware路由在部署时被忽略(错误404)

时间:2018-09-19 06:10:13

标签: node.js firebase nuxt

我正在尝试在Firebase Hosting上播放一个SSR nuxt-legacy-edge项目。 在开发人员模式下一切正常(npm run dev)。 我正在使用nuxtconfig.js中定义的serverMiddleware / api

serverMiddleware: [
    bodyParser.json(),
    session({
        secret: 'amdskfmdlkfdklfndfmdfndsmfndfnejnjheheuewytwgssa',
        resave: true,
        saveUninitialized: false,
        cookie: { maxAge: (20 * 60 * 1000), secure: false }  
    }),
    //{ path: '/api', handler: '~/api/index.js' },
    '~/api'
]

我的/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 serve --only functions,hosting或 使用

firebase deploy 

似乎这些路线丢失了,我得到了404(未找到)。

感谢您的帮助。

0 个答案:

没有答案