【发布时间】:2017-10-01 21:14:44
【问题描述】:
我已经在 Visual Studio Code 中启动了一个新的 TypeScript 项目,我想将它与 Cloud Functions for Firebase 服务一起使用,但我遇到了大量编译器错误。我已经四处寻找并尝试解决它们,因为它们似乎破坏了 Intelisense 并且在我自己编写的任何 TypeScript 代码中添加了错误。
仅安装工具后,我可以在新项目中重现问题,但我现在真的很困惑问题是什么。
我在全球范围内安装了firebase-tools。
我从一个空文件夹开始,首先我创建一个tsconfig.json 文件。
{
"compilerOptions": {
"module": "commonjs",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}
接下来我添加tasks.json 文件。
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "0.1.0",
"command": "tsc",
"isShellCommand": true,
"args": ["-p", "."],
"showOutput": "silent",
"problemMatcher": "$tsc"
}
然后我运行 firebase init functions 来初始化项目以使用函数 API。
运行此步骤安装的打包文件设置在packages.json 文件中。
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"dependencies": {
"firebase-admin": "~4.1.2",
"firebase-functions": "^0.5"
},
"private": true
}
此时,当我尝试构建项目并让它运行tsc 时,我会遇到一堆错误,例如重复标识符,并且接口Server 不能同时扩展类型'Server' 和'EventEmitter '。
在对 Google 嗤之以鼻一段时间后,我无法弄清楚问题出在哪里。我对 TypeScript 比较陌生,我不是 100% 熟悉一切是什么,一切都在哪里,但看起来存在冲突,因为 @types 和 typings 文件正在导出的类型越来越多相互混合或全局安装。
我尝试使用 tsconfig.json 中的 exclude 属性来排除 typings 目录,但这似乎不起作用。
我发现与我的问题最接近的票是 on GitHub 作为 TypeScript 项目的一部分,但我不确定它是哪个模块或指向何处。
任何帮助将不胜感激,我不确定是我对 TypeScript 不熟悉是问题(即配置问题)还是错误或类似问题。
编辑: 我已将 nodejs 和 npm 分别更新到版本 7.10.0 和 4.2.0。我删除了这些软件包并重新安装了它们,现在我遇到了一组稍微不同的错误。 node_modules 目录似乎已经被扁平化了。
【问题讨论】:
-
如果你正在使用 nodejs 和 npm 以及 webpack 或 browserify,你一般不应该有打字目录,而只使用 node_modules/@types。还要确保你没有那个 @types/core-js
-
您好,我正在使用 VS Code,但我认为我没有使用 browserify 或 webpack?这些目录来自安装依赖项时,所以我认为我无法控制它们。
-
确定,只需删除它们并从 package.json 文件中删除 typings install 命令
-
我检查并删除了类型并更新了相应的项目文件,这破坏了依赖它们的其他一些 TS 文件。 Typings 目录仅用于 base64url 模块。一定是其他原因导致了这个问题。我说我认为我没有任何控制权的原因是,如果包更新它会破坏我的自定义更改。
-
你总是可以选择性地卸载那些你不需要的
标签: typescript firebase compiler-errors google-cloud-functions firebase-tools