安装Angular 6后出现node_modules/rxjs/internal/types.d.ts(81,44): error TS1005: ';' expected错误

182

在安装Angular 6之后,我遇到了以下错误:

node_modules/rxjs/internal/types.d.ts(81,44): error TS1005: ';' expected.

请检查错误信息:

ERROR in node_modules/rxjs/internal/types.d.ts(81,44): error TS1005: ';' expected.
node_modules/rxjs/internal/types.d.ts(81,74): error TS1005: ';' expected.
node_modules/rxjs/internal/types.d.ts(81,77): error TS1109: Expression expected.

1
你好 @TheParam ,我在安装后遇到了错误。我还没有在其中编写任何代码。 - SSP
1
在Angular 6中,所需的rxjs版本为6.0.0,请检查下面的答案,它会有帮助。 - TheParam
这解决了我的问题,但现在我无法从中导入任何东西。 - Nikola
https://dev59.com/da7la4cB1Zd3GeqPhbHn 通过一个 postinstall 补丁传递 crypto 和 stream 解决了我的问题。 - andy magoon
这是因为您的Angular版本和TypeScript版本与rxjs版本不匹配。请检查这些版本是否相互兼容。 - Parth Developer
17个回答

452

这个问题可能是由于版本不匹配引起的。为了解决你的问题,你需要在 package.json 文件中进行以下更改。

第一步:进入 package.json 并将 "rxjs": "^6.0.0" 修改为 "rxjs": "6.0.0"

第二步:在你的项目中运行 npm install

无需更改 TypeScript 版本。(我的为:"typescript": "~2.7.2")

编辑:如果你正在使用 rxjs-compat,那么你还需要进行以下操作以解决此问题: 将 rxjs-compat 的版本从 "rxjs-compat": "^6.2.2" 改为 "rxjs-compat": "6.2.2"

希望这可以帮助你!


2
@SSP 你应该阅读一下 npm 如何指定软件包版本的文档。https://docs.npmjs.com/files/package.json#dependencies - NechiK
7
使用^操作符获取库的最新版本(如果可用)。 - TheParam
1
我们应该为Angular 6添加一个问题吗? - Michael W. Czechowski
2
实际上,有人已经在这里完成了这个任务,这是链接 https://github.com/ReactiveX/rxjs/issues/4511 - TheParam
2
它解决了问题。请问有人可以详细说明为什么 "rxjs": "^6.0.0" 不起作用吗? - Ashish Kumar Jaryal
显示剩余5条评论

12

你需要在 package.json 文件中进行一些更改。

转到 package.json 并将 "rxjs": "^6.0.0" 修改为 "rxjs": "6.0.0"

然后在项目中运行 npm update


首先,我使用了.msi(我在Windows 10上)更新了node到最新版本。然后我按照这里的修改更改了package.json并使用了npm update。我不得不重新启动我的机器,在尝试了几次之后,一切都正常了。尝试清除npm缓存没有起作用,反而让我的电脑卡住了。 - umbregachoong

11

我使用Angular 6和rxjs@6.4.0时遇到了相同的错误,但我将其降级为rxjs@6.3.3后,问题得到了解决。


谢谢,这个方法对我有用。我从node_modules中清除了rxjs和rxjs-compat,并降级了版本,然后进行了npm安装。只是为了确保我使用的是正确的版本。 - Swapnil Kadam

7

进入项目目录并运行以下命令:

npm install rxjs@6.0.0 --save


5
如果您正在使用rxjs-compat,则需要按照以下步骤进行修复。请更改rxjs-compat版本,从而解决此问题。
"rxjs-compat": "^6.2.2" 

to

"rxjs-compat": "6.2.2"

这对我有效。

4

我只需要编辑文件,在0后面的最后一行加入分号,如下所示:

进入路径[项目目录]/node_modules/rxjs/internal,以管理员身份打开文件types.d.ts,移动到文件末尾,添加一个分号。

原始代码:export declare type ObservedValueOf<O> = O extends ObservableInput<infer T> ? T : never;

修改后的代码:export declare type ObservedValueOf<O> = O; extends ObservableInput<infer T> ? T : never;


2
嗯,似乎不是一个永久的解决方案。下次重新安装项目时,错误可能会再次出现! - Zaphoid
@Zaphoid,我同意你的观点,但这是解决这个问题最简单的方法。我不知道一个如此广泛使用的库为什么会有这个问题。你的解决方案甚至在rxjs@6.6.3中都有效。我见过一些需要类型库的情况,但比我聪明的人没有提到这一点,所以我认为这个rxjs模块不存在这个问题。 - Woodsman

3

以前我用@TheParam的答案来解决问题,但最近开始使用yarn。不幸的是,我找不到yarn等效的

nmp update

我尝试使用

yarn upgrade

虽然我不确定这个命令是否等价于上面的命令,但它并没有起到帮助作用。

相反,我使用了

yarn add rxjs@6.0.0

它可以工作。与npm几秒钟相比,需要82秒的时间,但解决了问题。我使用的是node 8.11.2和yarn 1.15.2。


谢谢。对我来说需要683秒。 - Vignesh Krishnamoorthy

2

这是我的解决方案:

npm install rxjs@6.0.0 --save

ng server

ng server 应该是 ng serve。 - Vijay

1
我有同样的问题。
npm install typescript@2.8.0 

解决了我的问题。

0

我也遇到了同样的问题,修改"rxjs": "^6.0.0"为"rxjs": "6.0.0"并不起作用。我必须将angular CLI更新到最新的稳定版本 npm install -g @angular/cli,然后重新生成项目。

我的配置现在是:

Angular CLI: 7.3.6
Node: 10.15.3
OS: win32 x64
Angular: 7.2.9

打开 package.json 文件,将 "rxjs": "^6.2.1" 修改为 "rxjs": "6.2.1"。 - Raghulraj Palanisamy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接