我正在构建一个项目,该项目使用ServerMiddleware仅在客户端呈现某些页面(如果没有ServerMiddleware.刷新页面等问题…(
问题:不幸的是,每次我尝试通过"Firebase deploy"部署到Firebase Function时,我都会收到一个错误:
错误:找不到模块'~/serverMiddleware/selectiveSRSR.js'
如果我排除以下行,函数构建正常。据我所见,Nuxt/Vue没有将~/serverMiddleware/作为其构建的一部分。
以下是nuxt.config.js中引用我的服务器中间件的代码:
serverMiddleware: ['~/serverMiddleware/selectiveSSR.js']
在nuxt.config.js中的Build中向文件本身添加目录或路径(如上所述(也没有帮助。也许我做错了?
在本地测试(而不是构建(时,一切都能完美工作。
关于如何解决这个问题,有什么想法吗?
谢谢!
好的,所以对于其他点击它的人来说,以下是我绕过它的方法。
首先,我不知道这是Firebase Hosting还是Nuxt的错(我猜是Nuxt,但我需要纠正(,但下面是该怎么做…
1( 从nuxt.config.js中删除对ServerMiddleware的任何引用
2( 将以下内容添加到nuxt.config.js
modules: [
'~/local-modules/your-module-name'
],
3( 在项目根中创建目录~/本地模块/您的模块名称
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会抱怨找不到你的新模块