我正在建立一个仅利用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中将目录或路径(如上所述)添加到文件本身也无济于事。也许我做错了吗?
在本地测试(不构建)时,一切工作都很好。
请问我如何解决此问题的任何想法?
谢谢!
答案 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会抱怨找不到新模块