Getting more information from “SyntaxError: Parse error” message in PhantomJS/CasperJS
Getting more information from “SyntaxError: Parse error” message in PhantomJS/CasperJS
我有一个很长的 CasperJS 脚本。当我 运行 我得到:
幻影 file.js
SyntaxError: 解析错误
有没有办法获得有关该错误的更多信息。
至少一个行号?或者任何提示?
PhantomJS 本身无法确定这一点。 phantom.onError
上的文档说:
This is the closest it gets to having a global error handler in PhantomJS
并且这不会捕获语法错误。如果您尝试使用 --debug=true
选项 运行 它,您会看到很多调试消息,但最终错误的信息量仍然相同。
我尝试的另一件事是使用第二个 PhantomJS 脚本读取原始脚本并尝试 eval
它。 phantom.onError
事件在这种情况下被触发,但 trace
参数为空。
好处是 PhantomJS/CasperJS 脚本只是 JavaScript,因此您可以将它们粘贴到 http://jslint.com/ 或 运行 上的专用 jslinter 以查看它们在哪里问题所在。您必须在网站上标记一些选项,否则会出现很多错误:
- 将
phantom
添加到全局变量框,
- 启用node.js模式和
- 容忍"everything"(或者那些你真正想容忍的事情)
尝试 运行 节点的 file.js,因此对于您的示例:
node file.js
我花了整整 8 个小时来找到解决这个问题的技巧。诀窍是 运行 "phantomjs" 并键入 'require "path_to_js_file"'。我使用的是 2.1.1 版本的 phantomjs。可能 2.2 也有效。
然后会有一个堆栈跟踪显示哪一行是违规者。你不会在测试输出中看到这个。
在我的例子中,如果你为一个对象定义了两次 属性,它将适用于 chrome、firefox 等,但不适用于 phantomjs。 Lint 可能会有所帮助,但我从事的项目存在 >5K 的 lint 错误,几乎不可能看出问题所在。此外,特定问题可能隐藏在 "javascript strict mode violation" 的同一个桶下。 Nodejs 也没有抱怨这个。
我有一个很长的 CasperJS 脚本。当我 运行 我得到:
幻影 file.js SyntaxError: 解析错误
有没有办法获得有关该错误的更多信息。 至少一个行号?或者任何提示?
PhantomJS 本身无法确定这一点。 phantom.onError
上的文档说:
This is the closest it gets to having a global error handler in PhantomJS
并且这不会捕获语法错误。如果您尝试使用 --debug=true
选项 运行 它,您会看到很多调试消息,但最终错误的信息量仍然相同。
我尝试的另一件事是使用第二个 PhantomJS 脚本读取原始脚本并尝试 eval
它。 phantom.onError
事件在这种情况下被触发,但 trace
参数为空。
好处是 PhantomJS/CasperJS 脚本只是 JavaScript,因此您可以将它们粘贴到 http://jslint.com/ 或 运行 上的专用 jslinter 以查看它们在哪里问题所在。您必须在网站上标记一些选项,否则会出现很多错误:
- 将
phantom
添加到全局变量框, - 启用node.js模式和
- 容忍"everything"(或者那些你真正想容忍的事情)
尝试 运行 节点的 file.js,因此对于您的示例:
node file.js
我花了整整 8 个小时来找到解决这个问题的技巧。诀窍是 运行 "phantomjs" 并键入 'require "path_to_js_file"'。我使用的是 2.1.1 版本的 phantomjs。可能 2.2 也有效。
然后会有一个堆栈跟踪显示哪一行是违规者。你不会在测试输出中看到这个。
在我的例子中,如果你为一个对象定义了两次 属性,它将适用于 chrome、firefox 等,但不适用于 phantomjs。 Lint 可能会有所帮助,但我从事的项目存在 >5K 的 lint 错误,几乎不可能看出问题所在。此外,特定问题可能隐藏在 "javascript strict mode violation" 的同一个桶下。 Nodejs 也没有抱怨这个。