大佬教程收集整理的这篇文章主要介绍了Nuxt 服务器中间件在 Firebase Cloud Functions 上不起作用,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试在 Firebase 上部署 Nuxt app 以利用 SSR。此应用使用 Nuxt server middleware 作为 API 端点(用于发送邮件)。
它在本地运行良好,但一旦部署,也无法模拟。当我尝试查询时收到 404 响应,但我不明白为什么。 是否有人已经使用 Nuxt 中间件在 Firebase 上创建了 API 端点?
注意:我分享的 repo 链接仅包含重现问题的最低限度(不是我的整个应用程序)。
nuxt.config.js
const webpack = require("webpack")
const { config } = require('dotenv')
config({ path: `../.env` })
module.exports = {
mode: "universal",...
modules: [
"@nuxtJs/pwa",[
"@nuxtJs/firebase",{
config: { ... },services: {
analytics: true,perfoRMANce: true,functions: true
},onFirebaseHosTing: true,}
]
],buildModules: ["@nuxtJs/axios"],serverMIDdleware: ["./API/contact"],...
}
src/index.Js
const functions = require("firebase-functions")
const express = require("express")
const { Nuxt,Builder } = require("nuxt")
const cors = require('cors')
const app = express()
app.use(cors({ origin: true }))
const config = {
dev: false,buildDir: ".nuxt",build: {
publicPath: "/assets/"
}
}
const nuxt = new Nuxt(config)
exports.nuxtapp = functions.https.onrequest(async (req,res) => {
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
} else {
res.set("Cache-Control","public,max-age=300,s-maxage=600");
await nuxt.ready()
}
app.use(nuxt.render)
return app(req,res)
})
src/API/contact.Js
const express = require("express")
const app = express()
app.use(express.Json())
app.get("/",function (req,res) {
res.status(405).Json({ error: "query invalID" });
})
app.post("/",res) {
...
})
module.exports = {
path: "/API/contact",handler: app
}
调试日志
[deBUG] [2021-02-05T03:22:21.137Z] [functions] Got req.url=/nuxt-firebase-ssr-41d40/us-central1/nuxtapp/API/contact/,mapPing to path=/API/contact/ {"Metadata":{"emulator":{"name":"functions"},"message":"[functions] Got req.url=/nuxt-firebase-ssr-41d40/us-central1/nuxtapp/API/contact/,mapPing to path=/API/contact/"}}
[deBUG] [2021-02-05T03:22:21.158Z] [runtime-status] [22988] Ephemeral server handling POST request {"Metadata":{"emulator":{"name":"functions"},"function":{"name":"nuxtapp"},"message":"[runtime-status] [22988] Ephemeral server handling POST request"}}
[info] > » Rendering url /API/contact/ {"user":"» Rendering url /API/contact/","Metadata":{"emulator":{"name":"functions"},"message":"\u001b[90m> \u001b[39m » Rendering url /API/contact/"}}
[deBUG] [2021-02-05T03:22:21.160Z] [runtime-status] [22988] Ephemeral server survived. {"Metadata":{"emulator":{"name":"functions"},"message":"[runtime-status] [22988] Ephemeral server survived."}}
[deBUG] [2021-02-05T03:22:21.192Z] <<< [APIv2][status] POST http://localhost:5001/nuxt-firebase-ssr-41d40/us-central1/nuxtapp/API/contact/ 404
[deBUG] [2021-02-05T03:22:21.193Z] <<< [APIv2][body] POST http://localhost:5001/nuxt-firebase-ssr-41d40/us-central1/nuxtapp/API/contact/ [stream]
[info] i hosTing: 127.0.0.1 - - [05/Feb/2021:03:22:21 +0000] "POST /API/contact/ http/1.1" 404 - "http://localhost:5000/" "Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.104 Safari/537.36" {"Metadata":{"emulator":{"name":"hosTing"},"message":"127.0.0.1 - - [05/Feb/2021:03:22:21 +0000] \"POST /API/contact/ http/1.1\" 404 - \"http://localhost:5000/\" \"Mozilla/5.0 (windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.104 Safari/537.36\""}}
[info] i functions: Finished "nuxtapp" in ~1s {"Metadata":{"emulator":{"name":"functions"},"message":"Finished \"nuxtapp\" in ~1s"
我对 nuxt 不太熟悉,但看起来您没有将配置加载到您在 src/index.js
中创建的实例中。我认为应该是:
const config = require('./nuxt.config.js')
const nuxt = new Nuxt(config)
至少,您在 src/index.js
中的配置对象可能需要定义 serverMiddleware
属性。我很确定 new Nuxt()
不会自动加载 nuxt.config.js
文件。
以上是大佬教程为你收集整理的Nuxt 服务器中间件在 Firebase Cloud Functions 上不起作用全部内容,希望文章能够帮你解决Nuxt 服务器中间件在 Firebase Cloud Functions 上不起作用所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。