javascript - “未捕获的 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
,但没有出现堆栈跟踪:
我们也没有调用堆栈:
解决方案
在查看了我们项目的 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 版本,但这是我们解决问题的方式。
推荐阅读
- angular - 在小屏幕上隐藏一个 div 元素并显示另一个 div 代替该 div
- java - Android 9.0 Java.net.URL
- javascript - 打字稿:将局部变量名称分配给导入的嵌套命名空间
- firebase - Firebase:方法:projects.addFirebase of (google-apis-explorer) Api 不工作
- c# - 如何将字符串类型转换为int列表
- dns - 将子域指向另一个主机上的另一个域
- html - 引导表所有列未显示
- html - H1标签特殊设计
- c# - 我没有得到所有数据
- java - 将 Spring Boot 父启动器从 1.5 升级到 2.1.1.Release