0

tl; dr 当实习生编写的测试出现错误时,我似乎没有收到描述错误发生在哪一行的错误消息。我找到了一种解决方法,但它并不是真正理想的解决方案,因为它涉及弄乱依赖项目中的代码。有没有人有更好的方法/我只是做错了吗?谢谢!

详细信息:我已经多次看到,当解析用实习生编写的测试时出现问题(例如未能关闭括号、引号等),没有报告发生错误的实际行,并且只有一个像这样的错误(我已经将实际路径作为一个工作项目,但你明白了要点):

SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

我戳了一下,发现 vm.runInThisContext 有一个未记录的(? - 它不在此处)参数,如果启用该参数,它实际上提供了原始错误的详细信息(此处此处)-关于这将如何发挥的一些讨论但是如果我在伊斯坦布尔(如果它正在运行)中切换 dojo.js 和 hook.js 以使用此参数,我会收到如下错误消息:

<myproject>/test/publisherConfigSpec.js:16 errorCb cat = dfd.rejectOnError(function(error) { ^^^ SyntaxError: Unexpected identifier at Function.vm.runInThisContext (<myproject>/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16) at <myproject>/node_modules/intern/node_modules/dojo/dojo.js:745:8 at fs.js:266:14 at Object.oncomplete (fs.js:107:15)

这是我想要的输出(或者至少大大提高了我发现和修复错误的机会),但它并不适合搞乱节点依赖关系,而且在我看来,它可能会因为拉动而变化太多请求(请参阅API 的最新更新)当解析测试代码输入出错时,是否有另一种获取有用输出的方法?

感谢您的任何建议:)

4

1 回答 1

0

Node.js 为 SyntaxError 提供的输出显然不是很好,但我们可能不会在任何官方版本的 Intern 中使用未记录的功能(它们没有记录是有原因的!)以使其以不同的方式工作。非语法错误(运行时错误)将被 Intern 捕获并有效地报告给您使用的任何记者。

在这种情况下,我建议您使用支持语法检查的编辑器:Komodo Edit/IDE、WebStorm、SublimeText、Eclipse、vim……如果您尝试运行语法无效的代码,您的代码编辑器没有及时告诉你你犯了一个错误,这让你失望了。

于 2013-12-19T00:32:40.830 回答