在nodejs中使用assert模块的严格模式

时间:2018-04-03 18:35:37

标签: assert strict

请您帮助我理解以下错误:

js content:

const assert = require('assert').strict;
var res = assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]);

Error:

  

TypeError:无法读取未定义的属性“deepEqual”

My understanding:

根据Nodejs文档,在加载“.strict”模块时使用assert会让我们处于限制模式,从而导致assert.deepEqual()和{{1这个描述的结果是相同的。输出应为

  

“errors.AssertionError”

请指导我?

1 个答案:

答案 0 :(得分:0)

确保您使用的是节点v.9.10.1 v. 9.10.1 assert API,因为strict功能与以前的节点版本不兼容。这是节点v.8.11.1和v. 8.11.1 assert API,因此您可以看到strict不可用。

在我的情况下,使用节点v.9.10.1。

可以正常工作
const assert = require('assert').strict;

// check your node version
console.log(process.version)
assert.deepEqual([[[1, 2, 3]], 4, 5], [[[1, 2, '3']], 4, 5]);


v9.10.1
assert.js:49
  throw new AssertionError(obj);
  ^

AssertionError [ERR_ASSERTION]: Input A expected to deepStrictEqual input B:
+ expected - actual ... Lines skipped

  [
    [
...
        2,
-       3
+       '3'
      ]
...
    5
  ]