首页 > 解决方案 > “未捕获的 ReferenceError:未定义要求”仅在某些机器中

问题描述

我今天在 Angular.js 1.5/Angular 5 项目的测试套件中开始收到此错误:

HeadlessChrome 64.0.3282 (Linux 0.0.0) ERROR
  An error was thrown in afterAll
  Uncaught ReferenceError: require is not defined

在我的所有测试都成功运行后出现问题。奇怪的是它在本地运行良好,但它在失败的 Jenkins CI 服务器中。在其他开发人员中,只有十分之一的人遇到了与 Jenkins 相同的问题。

有很多其他帖子提到了同样的错误,但没有一个解决我的确切问题,比如这个这个这个,......

任何人都知道问题可能是什么?

编辑:

异常发生在 中modernizr/lib/cli.js,但没有出现堆栈跟踪:

在此处输入图像描述

我们也没有调用堆栈:

在此处输入图像描述

标签: javascriptzurb-foundationmodernizr

解决方案


在查看了我们项目的 bower 依赖项后bower ls -o,我们发现 Zurb Foundation 的临时依赖项有所不同。

在它工作的地方,modernizr设置为3.5.0

├─┬ foundation#5.5.1
│ ├── fastclick#1.0.6
│ ├── jquery#2.1.4
│ ├─┬ jquery-placeholder#2.0.9
│ │ └── jquery#2.1.4
│ ├─┬ jquery.cookie#1.4.1
│ │ └── jquery#2.1.4
│ └── modernizr#3.5.0

在它不起作用的地方,它被设置为3.9.0

├─┬ foundation#5.5.1
│ ├── fastclick#1.0.6
│ ├── jquery#2.1.4
│ ├─┬ jquery-placeholder#2.0.9
│ │ └── jquery#2.1.4
│ ├─┬ jquery.cookie#1.4.1
│ │ └── jquery#2.1.4
│ └── modernizr#3.9.0

强制modernizr版本3.5.0解决bower.json问题:

  "dependencies": {
    ...
    "modernizr": "3.5.0"
  }

我不完全理解为什么modernizr 在某些计算机中被解析为不同的版本,因为在这两种情况下我们都固定了相同的Zurb Foundation 版本,但这是我们解决问题的方式。


推荐阅读