大家早上好!
当使用带有Nuxt应用程序的Firebase时,我在调用曾经部署在Heroku上的函数(httpsCallable)时遇到了问题。
当从服务器端(SSR)调用时,将引发错误:
ReferenceError: Headers is not defined
at Service.<anonymous> (/app/node_modules/@firebase/functions/dist/index.node.cjs.js:517:25)
at step (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:139:27)
at Object.next (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:120:57)
at /app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:113:75
at new Promise (<anonymous>)
at Object.__awaiter (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:109:16)
at Service.call (/app/node_modules/@firebase/functions/dist/index.node.cjs.js:508:22)
at /app/node_modules/@firebase/functions/dist/index.node.cjs.js:444:26
at Store.checkToken (server.js:1:31132)
at Array.wrappedActionHandler (/app/node_modules/vuex/dist/vuex.common.js:794:23)
所以我理解firebase-js无法在它的环境中找到正确的“fetch”来访问fetch.Headers,因为渲染是在服务器端,它没有与客户端/ Navigator相同的环境。
所以我试着导入“node-fetch”或“whatwg-fetch”或“isomorphic-unfetch”模块,但没有任何帮助,firebase不能调用这些函数。
此行为在本地不存在,在本例中,firebase-js设法在SSR期间发出httpsCallable请求。
在whatwg-fetch的全局导入过程中,错误为:
HttpsErrorImpl: internal
at new HttpsErrorImpl (/app/node_modules/@firebase/functions/dist/index.node.cjs.js:59:28)
at _errorForResponse (/app/node_modules/@firebase/functions/dist/index.node.cjs.js:154:12)
at Service.<anonymous> (/app/node_modules/@firebase/functions/dist/index.node.cjs.js:539:33)
at step (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:139:27)
at Object.next (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:120:57)
at fulfilled (/app/node_modules/@firebase/functions/node_modules/tslib/tslib.js:110:62) {
code: 'internal',
details: undefined
}
有没有人遇到过或解决过这个问题?
祝你今天愉快!
1条答案
按热度按时间x9ybnkn61#
遇到了同样的问题。Fetch API是在Node.js上发布的just this year。您可以通过使用node-fetch模块或简单地像我一样将Node.js升级到17.5或更高版本来解决此问题。