"Uncaught ReferenceError: require is not defined" only in some machines

"Uncaught ReferenceError: require is not defined" only in some machines

我今天开始在 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 相同的问题。

有很多其他帖子提到了同样的错误,但 none 解决了我的确切问题,例如 this, this, this,...

有人知道问题出在哪里吗?

编辑:

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

我们也没有得到调用堆栈:

在使用 bower ls -o 查看我们项目的 bower 依赖项后,我们发现 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

bower.json 中将 modernizr 版本强制为 3.5.0 解决了问题:

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

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