"使用Typescript创建firebase云功能时,找不到名称'ServiceWorkerRegistration'"错误

Dee*_*eep 8 firebase typescript google-cloud-functions

我在firebase安装模块的情况下部署云功能时收到以下错误(如下图所示).尝试部署我的云功能时出错

我已经尝试安装@types/firebasefirebase收到相同的错误.我敢肯定,这个错误有事情做与此模块,因为当两个firebase@types/firebase卸载后,功能部署正确.

此外,云功能还没有调用此模块,因此我认为错误不在函数中.我已经为我的package.json文件和ts.config文件提供了代码.知道为什么我会收到此错误以及如何导入模块而不会出现此错误?如果还有另一个值得审核的文件,请告诉我.谢谢.

./package.json

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "lint": "./node_modules/.bin/tslint -p tslint.json",
    "serve": "firebase serve --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log",
    "build": "./node_modules/.bin/tsc"
  },
  "dependencies": {
    "dom": "0.0.3",
    "expo-server-sdk": "^2.4.0",
    "firebase-admin": "~5.12.1",
    "firebase-functions": "^1.0.3",
    "typescript": "^2.9.2"
  },
  "devDependencies": {
    "eslint": "^4.12.0",
    "eslint-plugin-promise": "^3.6.0",
    "ts-loader": "^4.4.2"
  },
  "main": "lib/index.js",
  "private": true
}
Run Code Online (Sandbox Code Playgroud)

./tsconfig.json

{
  "compilerOptions": {
    "lib": ["es6"],
    "module": "commonjs",
    "noImplicitReturns": true,
    "outDir": "lib",
    "sourceMap": true,
    "target": "es6",
    "allowJs": true,
  },
  "compileOnSave": true,
  "include": [
    "src"
  ]
}
Run Code Online (Sandbox Code Playgroud)

wee*_*ius 16

如果像我一样,你实际上需要在云功能中使用客户端firebase模块,问题以及解决方法在#880中有所描述:

解决方法是添加"dom"到您的"lib"编译器选项中tsconfig.json

我们的包假设存在DOM类型.问题是导入firebase/app所有包的进口类型.

我们的一些软件包(如Messaging)只能在浏览器中使用.不应在节点环境中导入这些包(或其类型).


小智 11

我过去几次遇到这个问题。您可以尝试将以下内容添加到tsconfig.json中:

tsconfig.json:

  "files": [
    "node_modules/typescript/lib/lib.es6.d.ts"
  ],
  "exclude": [
    "node_modules"
  ]
Run Code Online (Sandbox Code Playgroud)

因此,完整的tsconfig.json应该如下所示:

{
  "compilerOptions": {
    "lib": ["es6"],
    "module": "commonjs",
    "noImplicitReturns": true,
    "outDir": "lib",
    "sourceMap": true,
    "target": "es6"
  },
  "compileOnSave": true,
  "include": [
    "src"
  ],
  "files": [
    "node_modules/typescript/lib/lib.es6.d.ts"
  ],
  "exclude": [
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢您对此问题进行了修复,但是您能告诉我为什么吗? (2认同)