1

奇怪的事情正在发生。我刚刚升级到节点 v0.10.18.. 我的一个测试在一个意想不到的地方失败了.. 看起来我不能再做没有大括号的 if 语句了。

if(false)
    console.log('shouldn't be printed');

在上面的示例中,即使 if 语句失败,也会打印文本。但未在以下测试中打印;

if(false) {
     console.log('shouldn't be printed');
}

if(false) console.log('shouldn't be printed');

有什么我想念的吗,节点一直都是这样吗?

编辑:我只是注意到这仅在使用mocha时发生。代码在节点中运行正常。任何想法如何使用摩卡咖啡发生这种情况?

EDIT2:感谢各位的回答,我的示例很简单,实际上 mocha 深入到我目录中的文件中,但是当我使用节点检查器单步执行代码时,我看到即使那些 if 语句评估为假,它进入下一行并执行回调行,这会中断我的调用。我无法在其他任何地方重新创建它,但我对它是如何发生的感到目瞪口呆

EDIT3:好吧,伙计们,除了告诉你我在哪里看到它发生之外,我无法重现这个问题。我只是想在这里为一个开源项目做贡献https://github.com/jugglingdb/mysql-adapter 在 lib/mysql 中,朝向最后几行(大约 10 行)(链接如下)在哪里它检查 filter.where 和 filter.update,这就是问题发生的地方。如果我添加大括号,测试将通过,如果我不添加则不会

https://github.com/jugglingdb/mysql-adapter/blob/master/lib/mysql.js 890行

测试它的执行位置: https ://github.com/jugglingdb/mysql-adapter/blob/master/test/migration.test.js第 291 行 .. 它不存在,但检查错误将返回第 890 行的错误正在投掷

4

1 回答 1

0

该项目使用了一个名为semicov的模块,并将分号放在 if 行之后。实际上在项目本身中已经注意到,有人破坏的提交以某种方式进入了回购

于 2013-09-13T19:32:28.553 回答