我正在尝试使用 angularfire 构建一个 ng2 应用程序。在快速入门之后,我收到以下错误:
cannot find namespace 'firebase'
似乎与打字有关,但安装了所有打字。关于这个问题的任何想法?
我正在尝试使用 angularfire 构建一个 ng2 应用程序。在快速入门之后,我收到以下错误:
cannot find namespace 'firebase'
似乎与打字有关,但安装了所有打字。关于这个问题的任何想法?
如果您有一个新的 Angular 2.0 CLI 项目-这将起作用-我不知道您的特定设置:
tsconfig.json
看起来像这样:“编译器选项”:{
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types" /// - here - types are pointing to this @types folder inside node_modules.
]
}
@types
名为firebase
.firebase
,命名 index.d.ts
index.d.ts
看起来向 Angular 2.0 CLI 项目添加类型的推荐方法 - 是将它们添加到 node_modules/@types 文件夹中。如您所见,jasmine 类型的文件夹看起来相似 - 并且由 CLI 脚手架自动添加到那里。
似乎该错误已被报告并且(希望)正在处理中。在这里查看:
https://github.com/angular/angularfire2/issues/461
有些人成功地修改了 typings.json(删除了对 firebase 的依赖)或安装了 @next 版本的 typescript。就我个人而言,我目前遇到了同样的错误。
我希望这个错误最终得到修复(很快;))
编辑:似乎“错误”是几个必须正确的依赖项的组合。最后,我设置了一个变量PATH
来指向. 出于某种原因,它被用来代替 node package 中的(首选)。tsc
Program Files
typescript
尝试在您的导入下添加此行
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
IE
import { AngularFireModule } from 'angularfire2';
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
当您将 vanilla js 添加到打字稿时,您会这样做,它基本上对打字稿说“firebase”变量存在,即使您现在没有看到它,如果它确实让我知道,它应该有望消除错误。
解决方案:
1.Inside package.json, remove ^ from "firebase": "^4.8.1"
1.1 Downgrade Firebase from 4.8.1 to 4.8.0 by changing 4.8.1 to 4.8.0
1.2 End result should look like this: "firebase": "4.8.0"
2. Run npm update in the Project Root. NPM will downgrade Firebase for ya
3. Run ng serve --open to check for compilation errors. There shouldn't be any.
原因:
Firebase 引入了一些 AngularFire2 尚未应对的重大变化。在 AngularFire2 团队解决之前,这将是解决方案。
添加一个竖起大拇指的表情符号,并在此处指导遇到同样问题的任何人!会节省他们很多时间!