Node不允许if语句没有大括号?

时间:2013-09-13 18:32:45

标签: javascript node.js mocha

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

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 时才会发生这种情况。代码在节点中运行正常。有没有想过如何使用mocha发生这种情况?

EDIT2 :谢谢你的回答,我的例子很简单,实际上mocha深入到我的目录中的文件中,但是当我使用node-inspector踩过代码时,我看到了即使那些if语句的计算结果为false,它也会进入下一行并执行回调行,这会打破我的调用。我无法在其他任何地方重新创建它,但我对它的发生方式感到茫然

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行正在抛出的错误

1 个答案:

答案 0 :(得分:0)

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