当我“ng serve”时,Angular CLI 给了我“TypeError: callbacks[i] is not a function”

Posted

技术标签:

【中文标题】当我“ng serve”时,Angular CLI 给了我“TypeError: callbacks[i] is not a function”【英文标题】:Angular CLI gives me "TypeError: callbacks[i] is not a function" when I "ng serve" 【发布时间】:2018-07-18 22:50:15 【问题描述】:

我实际上只是全新安装了 Angular CLI 以进行尝试,但我不知道是什么导致命令行出现以下错误:

    PC:cobros Fran$ ng serve
** NG Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
 95% emitting/Users/Fran/Documents/Workspace/Repos/cobros/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:40
        callbacks[i](err, result);
                    ^

TypeError: callbacks[i] is not a function
    at Storage.finished (/Users/Fran/Documents/Workspace/Repos/cobros/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:40:15)
    at /Users/Fran/Documents/Workspace/Repos/cobros/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:77:9
    at /Users/Fran/Documents/Workspace/Repos/cobros/node_modules/graceful-fs/polyfills.js:287:18
    at FSReqWrap.oncomplete (fs.js:153:5)

这是我尝试“ng -v”时返回的信息(如果它有用的话):

Angular CLI: 1.6.8
Node: 8.9.0
OS: darwin x64
Angular: 5.2.4
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

@angular/cli: 1.6.8
@angular-devkit/build-optimizer: 0.0.42
@angular-devkit/core: 0.0.29
@angular-devkit/schematics: 0.0.52
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.8
@schematics/angular: 0.1.17
typescript: 2.5.3
webpack: 3.10.0

“增强解析”模块甚至可以做什么? 我是否安装了角度错误?我按照https://github.com/angular/angular-cli 的说明进行操作,并确保我满足了先决条件。

【问题讨论】:

昨天我用 CLI 创建了一个应用程序,它工作了,我又试了一个新的,这次它崩溃了,我想发生了一些更新,也许这对帮助我们的人有帮助 在将@angular 升级到最新(5.2.4)和 cli 到 1.6.8 后,今天发生在我身上。链接到 cli 1.6.8 版本(未提及重大更改)github.com/angular/angular-cli/releases/tag/v1.6.8 哈哈,我想我只是选择了最糟糕的时刻来尝试 Angular CLI github.com/angular/angular-cli/issues/9550 那么我猜谁说“这是一个已知错误”以及如何降级这个东西的说明都会得到最佳答案。 【参考方案1】:

尝试卸载并重新安装 Angular CLI:

全局包:

npm uninstall -g @angular/cli npm cache clean if npm version is > 5 then usenpm cache verifyto avoid errors (or to avoid using --force) npm install -g @angular/cli@latest

本地项目包:

rm -rf node_modules dist # use rmdir /S/Q node_modules dist in Windows Command Prompt; use rm -r -fo node_modules,dist in Windows PowerShell npm install --save-dev @angular/cli@latest npm install

【讨论】:

仍然是brokerino 没有帮助。在 AngularCli 团队解决问题之前,我不得不降级到 1.6.7(请参阅 github.com/angular/angular-cli/issues/9550)。【参考方案2】:

编辑:问题现已修复,因此无需再使用此解决方法。


在将@angular/cli 升级到1.6.8 后发生。

解决方案:问题出在copy-webpack-plugin (https://github.com/webpack-contrib/copy-webpack-plugin/issues/217) npm i copy-webpack-plugin@4.3.1 --save-dev 帮助

注意:以前提供的解决方案是将 cli 降级到 1.6.7,但没有帮助。

【讨论】:

【参考方案3】:

关注 github.com/angular/angular-cli/issues/9550(感谢 @oers 提供 cmets 中的链接)

我刚刚将 Anuglar CLI 降级到 1.6.7 版。

为此,只需键入

npm uninstall -g @angular/cli

一旦完成安装以前的版本

npm install -g @angular/cli@1.6.7

注意:这会起作用,但这只是一个临时解决方案,他们可能 - 并希望 - 热修复此问题。

编辑:实际上我尝试了没有使用 CLI 的错误项目,再试一次,它不起作用,如果你关注 github 线程,它看起来像一件大事,因为它不适用于 CLI 1.5.x 或 1.6.x(未尝试与其他版本一起使用)。看起来我们对 ATM 唯一能做的就是调试或坐等。

哎呀!

【讨论】:

你可能有一个错字 - 你卸载了两次 这对我不起作用,是我错过了一个技巧还是每个人都是这样? 它不起作用,请查看编辑(这就是我取消您的编辑的原因,在您提交编辑之前我已经对其进行了编辑,但是谢谢!)【参考方案4】:

编辑:问题现已修复,因此无需再使用此解决方法。


找到解决方案(解决方法)here

"copy-webpack-plugin": "4.3.0" 添加到您的 package.json 中

谢谢@neshkatrapati

【讨论】:

npm install copy-webpack-plugin@4.3.0 必须在安装 cli 后完成 - 在我的实例中,但可以。 它也是真正的 angular-cli 1.3 版本与 copy-webpack 更改一起使用,但是我可以想象对于许多人来说这不是一个解决方案。 不要使用变通方法,Angular 团队现在已解决。 他们似乎修复了它,我刚刚测试了使用 CLI 从头开始​​创建一个应用程序并且工作正常【参考方案5】:

我遇到了同样的问题,这个命令为我创造了奇迹

npm install copy-webpack-plugin@4.3.1

【讨论】:

【参考方案6】:

正如这里所说的https://github.com/angular/angular-cli/issues/9550,这是 copy-webpack-plugin 的问题。

可以通过npm install copy-webpack-plugin@4.3.0解决

【讨论】:

【参考方案7】:

运行这个命令 npm install copy-webpack-plugin@4.3.0

【讨论】:

【参考方案8】:

编辑

只需执行yarn upgrade

有一个 copy_webpack_plugin 版本修复了这个错误(4.4.1),所以这应该是解决这个问题的首选。使用 npm,npm --depth 9999 update 应该可以递归更新所有依赖项。

关于 npm 更新的 depth 参数:

从 npm@2.6.1 开始,npm 更新将只检查***包。以前版本的 npm 也会递归地检查所有依赖项。要获得旧行为,请使用 npm --depth 9999 update

原答案如下:

解决方案

rm -rf node_modules package-lock.json
npm i copy-webpack-plugin@4.3.1 -E -O
npm i

解释

我们删除了 node_modules 和 lockfile 我们仅将 copy_webpack_plugin 指定为对等依赖项(选项 -O)和精确版本(选项 -E) 我们安装 node_modules

【讨论】:

【参考方案9】:

回调[i](错误,结果); ^

TypeError: callbacks[i] 不是函数

解决方案:- npm install copy-webpack-plugin@4.3.0

【讨论】:

【参考方案10】:

如果 npm install copy-webpack-plugin@4.3.1 没有帮助尝试添加 package.json:

“可选依赖”: “复制 webpack 插件”:“4.3.1” , “决议”: “复制 webpack 插件”:“4.3.1”

【讨论】:

【参考方案11】:

这个问题现在应该在刚刚发布的 v4.4.1 中得到解决。 https://github.com/webpack-contrib/copy-webpack-plugin/releases/tag/v4.4.1

【讨论】:

【参考方案12】:

试试这个命令 -> npm install copy-webpack-plugin@4.3.0 解决了我的问题

【讨论】:

以上是关于当我“ng serve”时,Angular CLI 给了我“TypeError: callbacks[i] is not a function”的主要内容,如果未能解决你的问题,请参考以下文章

运行 ng serve 时找不到模块“@angular/compiler-cli/ngc”

Angular CLI - ng serve - 来自节点进程的高 CPU 使用率

错误,使用 ng-cli 运行 ng serve 时编译失败

使用ng serve 在Vs Code里调试 anguar 项目

ng serve 不会编译

分配失败 - 当 ng serve 时,Angular 11 中的 JavaScript 堆内存不足