当我尝试从项目中的functions目录启动外壳程序进行本地测试时,模拟器会启动,但是我的函数无法加载。
当我运行“ npm run build”时,我没有收到任何错误。发生什么事了?
我尝试删除功能目录并使用firebase-tools cli再次创建它,但仍然出现相同的错误。我还导出了管理员凭据。
我正在使用从firebase-tools cli生成的index.ts文件中创建的默认方法。
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
// // Start writing Firebase Functions
// // https://firebase.google.com/docs/functions/typescript
//
export const helloWorld = functions.https.onRequest((request,
response) => {
response.send("Hello from Firebase!");
});
我希望仿真器启动该函数的实例以进行测试,但相反,我看到此错误:
✔ functions: Emulator started at http://localhost:5001
⚠ TypeError: _onRequestWithOpts is not a function
at Object.httpsProvider._onRequestWithOpts (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:278:24)
at Object.httpsProvider.onRequest (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:283:34)
at Object.<anonymous> (/Volumes/G-DRIVE mobile USB-C/CLEAN UP/Documents/code_bank/typescript/theincrowdapp/functions/lib/index.js:9:38)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
⚠ We were unable to load your functions code. (see above)
- It appears your code is written in Typescript, which must be compiled before emulation.
- You may be able to run "npm run build" in your functions directory to resolve this.
答案 0 :(得分:14)
如果遇到此错误,请在npm install firebase-functions@3.0.2
目录中运行functions
。
此问题将很快修复,您可以在此处进行以下操作: https://github.com/firebase/firebase-tools/issues/1480
答案 1 :(得分:2)
我发现以下错误:
node_modules / firebase-tools / lib / emulator / functionsEmulatorRuntime.js
第276行:
const _onRequestWithOpts = httpsProvider._onRequestWithOpts;
应为:
const _onRequestWithOpts = httpsProvider._onRequestWithOptions;
答案 2 :(得分:1)
我遇到了同样的问题,但是通过执行以下操作使其与最新版本的firebase- *软件包一起使用。
Firebase->设置->服务帐户“ Generate new private key”,并将文件保存在功能目录下。尝试将其命名为“ service-account.json”。
在您的命令行(例如Mac)上,运行“ export GOOGLE_APPLICATION_CREDENTIALS =
修改tsconfig.json“ strict”:false,“ noImplicitAny”:false,“
Voila!
答案 3 :(得分:0)
将firebase函数降级到3.0.0版
答案 4 :(得分:0)
删除 node_modules ,然后运行 npm install , npm install firebase-admin 和 npm install firebase-functions@3.0 .2
答案 5 :(得分:0)
尽管我将firebase-funcitons更新为最新版本,但我一年前就遇到了这个错误,昨天又遇到了这个错误。
我还必须使用npm i -g firebase-tools@latest
更新firebase-tools
最后要做的是关闭命令行/打开一个新选项卡,以便使用最新版本
总结:
npm i firebase-functions@latest
npm i -g firebase-tools@latest
关闭并打开命令行