【问题标题】:Firebase Hosting: Function not working with ServerMiddleware (Vue/ Nuxt)Firebase 托管:功能不适用于 ServerMiddleware (Vue/Nuxt)
【发布时间】:2020-06-17 13:32:21
【问题描述】:

我正在构建一个项目,该项目利用 ServerMiddleware 仅在客户端呈现某些页面(如果没有 ServerMiddleware,我无法找到另一种使其正常工作的方法。刷新页面等问题......)

问题:不幸的是,每次我尝试通过“firebase deploy”部署到我的 Firebase 功能时,都会出现错误:

错误:找不到模块'~/serverMiddleware/selectiveSSR.js'

如果我排除以下行,则该函数构建正常。据我所知,Nuxt/Vue 不包括 ~/serverMiddleware/ 作为其构建的一部分。

这里是 nuxt.config.js 中引用我的 serverMiddleware 的代码:

serverMiddleware: ['~/serverMiddleware/selectiveSSR.js']

在 nuxt.config.js 的 Build 中将目录或路径(如上)添加到文件本身也无济于事。也许我做错了?

在本地测试(非构建)时一切正常。

请问有什么办法可以解决这个问题吗?

谢谢!

【问题讨论】:

  • 如果我理解正确,下面这行也没有用,对吧? serverMiddleware: ['~/serverMiddleware']
  • 它没有。我找到了解决方案,见下文。谢谢!

标签: firebase vue.js google-cloud-functions nuxt.js firebase-hosting


【解决方案1】:

好的,对于遇到此问题的其他人,这就是我解决它的方法。

首先,我不知道这是 Firebase Hosting 还是 Nuxt 的错(我猜是 Nuxt,但我会更正),但这是该怎么做......

1) 从 nuxt.config.js

中删除对 ServerMiddleware 的任何引用

2) 将以下内容添加到 nuxt.config.js

modules: [
    '~/local-modules/your-module-name'
  ],

3) 在你的项目根目录下创建目录~/local-modules/your-module-name

4)在新目录下,创建一个package.json:

{
    "name": "your-module-name",
    "version": "1.0.0"
  }

和 index.js - 关键,this.addServerMiddleware 允许您调用中间件服务器端

module.exports = function(moduleOptions) {
  this.addServerMiddleware('~/serverMiddleware/')
}

5) 创建目录~/serverMiddleware

6) 将中间件函数添加到新目录下的 index.js 中:

export default function(req, res, next) {
 // YOUR CODE
  next() // Always end with next()!
}

7) 使用“依赖项”下的新本地模块更新 package.json

    "your-module-name": "file:./local-modules/your-module-name"

不要忘记您也需要在函数目录中执行此操作,否则 Firebase 会抱怨找不到您的新模块

【讨论】:

  • 太好了!请考虑接受您自己的答案,以便社区在遇到类似问题时可以找到此解决方案:)
  • 不幸的是,它对我不起作用。还是同样的错误。 Cannot resolve "~/serverMiddleware/" from "workspace/serverMiddleware/".
猜你喜欢
  • 2021-09-09
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 2023-04-07
  • 2018-10-20
  • 2018-12-09
相关资源
最近更新 更多