TypeScript开发Firebase Functions部署时抛出类型错误如何解决
错误根因
该报错是嵌套项目结构下的TS类型声明冲突:你的Firebase Functions目录嵌套在包含React的上层项目中,TS编译时同时扫描到了上层根目录node_modules和functions子目录node_modules中的两份@types/react声明文件,同一个SVG属性被重复定义触发了TS2717错误。
解决方案
方案1:修改functions目录下的
tsconfig.json配置,新增编译参数从编译层面屏蔽冲突
新增三个配置项:skipLibCheck: true:跳过所有第三方.d.ts声明文件的类型检查,不会影响业务代码的TS校验规则typeRoots: ["./node_modules/@types"]:指定TS仅读取当前functions目录下的类型包,禁止向上递归查找上层目录的node_modules类型- 可选:如果云函数不需要React相关类型,新增
types: ["node"]指定仅加载Node.js基础类型,完全避免加载到无关的React类型声明
修改后完整的tsconfig.json参考:
{ "compilerOptions": { "module": "commonjs", "noImplicitReturns": true, "noUnusedLocals": true, "outDir": "lib", "sourceMap": true, "strict": true, "target": "es2017", "skipLibCheck": true, "typeRoots": ["./node_modules/@types"], "types": ["node"] }, "compileOnSave": true, "include": ["src"] }
- 方案2:清理functions目录下的冗余依赖
如果云函数业务完全不需要React相关能力,直接删除functions目录下误装的React类型包即可,在functions目录执行命令:npm uninstall @types/react @types/react-dom
修改完成后重新执行npm run deploy即可正常部署。
内容的提问来源于stack exchange,提问作者aryan singh
相关产品推荐
相关产品推荐

