AngularJS throws Error: [ng:cpws] Can't copy! Making copies

AngularJS throws Error: [ng:cpws] Can't copy! Making copies

我在我的个人电脑上安装了一个工作项目,但只在我的机器上出现了这个运行时错误。我个人认为这与代码的编译方式有关。 我的问题是为什么错误只出现在我的机器上?

Error: [ng:cpws] Can't copy! Making copies of Window or Scope instances is not supported.
https://errors.angularjs.org/1.6.7/ng/cpws

首先我检查了节点和 npm 版本是否相同,它们是:

node: v8.11.3
npm: 5.6.0
OS: Windows 10

生成此错误的代码段正在使用 $scope.$watch(object, callback, true)。查看 angular 文档后,我删除了第三个参数,它似乎是麻烦制造者。之后又遇到了其他问题,于是我问自己为什么在我的机器上(从环境角度来看是一样的)出现错误,我停止修改代码并开始寻找构建部分。

我不知道这是否对您有帮助,但生成错误的页面包含使用 angular-formly 构建的表单。 此外,我们正在使用 laravel mix 来编译代码。

更新

我刚刚更新了节点和 npm 版本。起初,我对 node-sass 包有一些问题,但我解决了。 我仍然有错误。 :(

node: v11.10.0
npm: 6.8.0

尝试重新检查是否为您加载了正确版本的 angularjs。许多样板文件声明 angular 依赖项,使用类似:

...
"angular": "^1.6.7",
...

当 npm 看到它时,如果库不在 node_modules 目录中,它将加载最新的 MINOR 版本。如果它在 node_modules 目录中并且大于或等于 1.6,它将保持原样。如果您实际在您使用的版本控制系统中提交它,拥有一个包锁定文件可能会使您免于这个问题。

这是有问题的,因为加载 1.7 版本可能会带来向后不兼容的更改(angularjs 不尊重 semver)。