Firebase托管:该功能不适用于ServerMiddleware(Vue / Nuxt)

时间:2020-03-05 00:19:04

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

我正在建立一个仅利用ServerMiddleware渲染客户端页面的项目(如果没有ServerMiddleware,我找不到其他方法可以使此页面正常工作。刷新页面等问题...)

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

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

如果我排除以下行,该函数将生成OK。据我所知,Nuxt / Vue不包含〜/ serverMiddleware / 作为其构建的一部分。

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

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

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

在本地测试(不构建)时,一切工作都很好。

请问我如何解决此问题的任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,对于其他任何碰到这个问题的人,这就是我的解决方法。

首先,我不知道这是否是Firebase Hosting或Nuxt的问题(我想可能是Nuxt,但我有待纠正),但这是要做的...。

1)从 nuxt.config.js

中删除对ServerMiddleware的任何引用

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

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

3)在项目根目录中创建目录〜/ local-modules /您的模块名称

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"

别忘了您也需要在functions目录中执行此操作,否则Firebase会抱怨找不到新模块