8

我正在尝试使用 angularfire 构建一个 ng2 应用程序。在快速入门之后,我收到以下错误:

cannot find namespace 'firebase'

似乎与打字有关,但安装了所有打字。关于这个问题的任何想法?

4

5 回答 5

6

如果您有一个新的 Angular 2.0 CLI 项目-这将起作用-我不知道您的特定设置:

  1. 确保你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.
]

}

  1. 在里面创建一个@types名为firebase.
  2. 在里面新建一个文件firebase,命名 index.d.ts
  3. 将内容表单放在这里index.d.ts
  4. 是官方的 angularfire2 设置文档。故障排除部分不准确 - 对于角度 cli 项目。确保不要在 tsconfig.json 或 typings.json 中放置任何声明或内容(截至 2016 年 9 月 28 日)。

看起来向 Angular 2.0 CLI 项目添加类型的推荐方法 - 是将它们添加到 node_modules/@types 文件夹中。如您所见,jasmine 类型的文件夹看起来相似 - 并且由 CLI 脚手架自动添加到那里。

于 2016-09-28T10:21:21.473 回答
3

它按照问题中的描述工作。

tsconfig.json:

"types": [ "jasmine", "firebase" ]

无法相信它这么容易修复。

于 2016-08-26T13:16:50.397 回答
1

似乎该错误已被报告并且(希望)正在处理中。在这里查看:

https://github.com/angular/angularfire2/issues/461

有些人成功地修改了 typings.json(删除了对 firebase 的依赖)或安装了 @next 版本的 typescript。就我个人而言,我目前遇到了同样的错误。

我希望这个错误最终得到修复(很快;))

编辑:似乎“错误”是几个必须正确的依赖项的组合。最后,我设置了一个变量PATH来指向. 出于某种原因,它被用来代替 node package 中的(首选)。tscProgram Filestypescript

于 2016-08-25T12:30:02.013 回答
1

尝试在您的导入下添加此行

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”变量存在,即使您现在没有看到它,如果它确实让我知道,它应该有望消除错误。

于 2016-10-06T16:19:01.247 回答
0

解决方案:

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 团队解决之前,这将是解决方案。

添加一个竖起大拇指的表情符号,并在此处指导遇到同样问题的任何人!会节省他们很多时间!

于 2018-01-09T03:32:03.913 回答