在PhantomJS中需要JS错误,但不是Chrome / FireFox
RequireJS errors in PhantomJS but not Chrome/FireFox
我有两个文件在同一个目录中:
<html>
<head>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.20/require.js"></script>
<script type="text/javascript">
require(["fakeTest"], function () {});
</script>
</head>
<body>
</body>
</html>
和
define(["require", "exports"], function (require, exports) {
alert('foo');
});
如果我在Chrome/FireFox中运行它,我会得到我所期望的。如果我尝试用这个从 CMD 运行:
phantomjs --remote-debugger-port=9000 testFile.html
我收到错误:
错误:找不到模块"假测试"
需要
phantomjs://bootstrap.js:299 需要 phantomjs://bootstrap.js:263
我已经尝试过最新的PhantomJS和旧版本,与RequireJS相同。我遍历了谷歌,但找不到任何解决方案。我让其他人在他们的计算机上尝试过这个,他们看到了同样的问题。我已经尽可能地简化了文件,但不确定此时还能尝试什么。
如果您直接运行 PhantomJS,则需要创建一个脚本来加载页面。 请参阅下面的示例。也就是说,如果您正在尝试测试您的网页,则有一些旨在与PhantomJS一起使用的无头测试框架。 这些框架负责在运行测试时加载 HTML、脚本和其他资源的详细信息。 就个人而言,我将 Karma Test Runner 与 karma-requirejs 插件一起使用来运行单元测试。
如果你尝试直接运行PhatomJS,你需要创建一个脚本来打开HTML页面。 在下面的简单示例中,run.js,将打开"testFile.html"页面,并打印页面的标题。 然后,它会设置 100 毫秒的超时时间,再次打印标题并退出。
var page = require('webpage').create();
page.open('testFile.html', function(status) {
var title = page.evaluate(function() {
return document.title;
});
console.log('Page title is ' + title);
setTimeout(function () {
var title = page.evaluate(function () {
return document.title;
});
console.log('Page title is ' + title);
phantom.exit()
}, 100);
});
下面是运行命令的输出示例:
phantomjs run.js
Page title is Original Title
Page title is Title Updated
超时的原因是 AMD 模块是异步加载的,您需要在运行.js脚本中构建一种方法,以考虑 AMD 模块的异步性质。我强烈建议使用与 RequireJS 集成的现有测试运行器之一,而不是重新发明轮子。
要查看此操作,请将 testFile 修改为.html:
<html>
<head>
<title>Original Title</title>
<script type="text/javascript"
src="http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.20/require.js">
</script>
<script type="text/javascript">
require(["fakeTest"], function () {});
</script>
</head>
<body>
</body>
</html>
而假的.js是:
define(["require", "exports"], function (require, exports) {
document.title = 'Title Updated';
});
- XMLHttpRequest - difference between Chrome & Firefox
- 长时间运行的脚本IE与Chrome/Firefox
- Javascript语法在Safari/Webkit中无效,在Chrome/Firefox中运行良好
- 代码在 Dreamweaver cs6 中工作,但在 chrome/firefox 中不起作用
- 在调试客户端时使用Chrome / Firefox
- Chrome/Firefox 使事件侦听器断点在停止之前跳过 jQuery 和其他库
- Chrome/Firefox 一次在所有 JavaScript onclick 事件上设置断点
- 未捕获的类型错误:无法读取IE和Chrome Firefox中未定义的属性“文档”很好
- 2D纹理渲染在Safari中闪烁,在Chrome / Firefox中很好
- 砌体JS插件 - Chrome / Firefox 问题
- Chrome/Firefox 中的 Rect 函数有什么用
- 在Chrome/Firefox中全屏按转义时未触发键下达事件
- 在PhantomJS中需要JS错误,但不是Chrome / FireFox
- Ruby Time to JavaScript Date in Chrome/Firefox
- 通过Google Chrome/Firefox Addon中的控制台访问/操作内容脚本
- 如何在Chrome/Firefox中导出ES6中的变量
- 在调用 window.location.asassigned 后,网页渲染在 chrome/firefox 之间的行为不
- 在将静态资源切换到CDN后,谷歌在Chrome+Firefox中映射错误,在Safari中很好:
- 粗体在Chrome/Firefox中太过粗体
- Chrome/Firefox中双美元符号选择器查询功能的来源是什么