AngularFire2:找不到命名空间 "firebase"
AngularFire2: Cannot find namespace "firebase"
我正在尝试使用 angularfire 构建一个 ng2 应用程序。在快速入门之后,我收到以下错误:
cannot find namespace 'firebase'
似乎是打字的问题,虽然安装了所有这些。关于这个问题有什么想法吗?
似乎已经报告了错误并且(希望)正在处理。在这里查看:
https://github.com/angular/angularfire2/issues/461
有些人成功修改了 typings.json(删除了对 firebase 的依赖)或安装了 @next 版本的 typescript。就我个人而言,我目前遇到了同样的错误。
我希望这个错误最终得到修复(很快 ;))
编辑:似乎 'bug' 是几个必须恰到好处的依赖项的组合。最后,我将 PATH
变量设置为指向 Program Files
下的旧 tsc
安装。出于某种原因,它被用来代替节点包 typescript
.
中的(首选)
它的工作原理如 the issue 中所述。
tsconfig.json:
"types": [
"jasmine",
"firebase"
]
简直不敢相信修起来这么容易。
如果你有一个新的 angular 2.0 CLI 项目 - 这会起作用 - 我不知道你的特定设置:
- 确保您的
tsconfig.json
看起来像这样:
"compilerOptions":
{
"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
- 将内容形式 here 放入
index.d.ts
- here 是官方 angularfire2 安装文档。故障排除部分不准确 - 对于 angular cli 项目。 请确保不要在 tsconfig.json 或 typings.json 中放置任何声明或内容(截至 2016 年 9 月 28 日)。
看起来像是将类型添加到 Angular 2.0 CLI 项目的推荐方法 - 是将它们添加到 node_modules/@types 文件夹中。正如您所见,jasmine 类型的文件夹看起来相似 - 并由 CLI 脚手架自动添加到那里。
尝试在您的导入下添加这一行
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
即
import { AngularFireModule } from 'angularfire2';
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
当你将 vanilla js 添加到 typescript 时,你会这样做,它基本上是在告诉 typescript ‘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 团队解决之前,这就是解决方案。
添加一个竖起大拇指的表情符号,并将遇到同样问题的人引导至此处!会节省他们很多时间!
我正在尝试使用 angularfire 构建一个 ng2 应用程序。在快速入门之后,我收到以下错误:
cannot find namespace 'firebase'
似乎是打字的问题,虽然安装了所有这些。关于这个问题有什么想法吗?
似乎已经报告了错误并且(希望)正在处理。在这里查看:
https://github.com/angular/angularfire2/issues/461
有些人成功修改了 typings.json(删除了对 firebase 的依赖)或安装了 @next 版本的 typescript。就我个人而言,我目前遇到了同样的错误。
我希望这个错误最终得到修复(很快 ;))
编辑:似乎 'bug' 是几个必须恰到好处的依赖项的组合。最后,我将 PATH
变量设置为指向 Program Files
下的旧 tsc
安装。出于某种原因,它被用来代替节点包 typescript
.
它的工作原理如 the issue 中所述。
tsconfig.json:
"types": [
"jasmine",
"firebase"
]
简直不敢相信修起来这么容易。
如果你有一个新的 angular 2.0 CLI 项目 - 这会起作用 - 我不知道你的特定设置:
- 确保您的
tsconfig.json
看起来像这样:
"compilerOptions": {
"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
- 将内容形式 here 放入
index.d.ts
- here 是官方 angularfire2 安装文档。故障排除部分不准确 - 对于 angular cli 项目。 请确保不要在 tsconfig.json 或 typings.json 中放置任何声明或内容(截至 2016 年 9 月 28 日)。
看起来像是将类型添加到 Angular 2.0 CLI 项目的推荐方法 - 是将它们添加到 node_modules/@types 文件夹中。正如您所见,jasmine 类型的文件夹看起来相似 - 并由 CLI 脚手架自动添加到那里。
尝试在您的导入下添加这一行
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
即
import { AngularFireModule } from 'angularfire2';
declare let firebase: any; // <== THERE IS AN ERROR IN THE .d.ts file
当你将 vanilla js 添加到 typescript 时,你会这样做,它基本上是在告诉 typescript ‘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 团队解决之前,这就是解决方案。
添加一个竖起大拇指的表情符号,并将遇到同样问题的人引导至此处!会节省他们很多时间!