如何在Node.js中导入util模块



isDeepStrictEqual((方法进行对象比较,但被错误阻止:

util.isDeepStrictEqual() is not a function
  1. 根据官方文档:此方法在v9.0.0中引入,我使用的是Node v12:https://nodejs.org/api/util.html#util_util_isdeepstrictequal_val1_val2

  2. 我确认这个方法在命令行上可用:

    D:>node
    Welcome to Node.js v12.18.2.
    Type ".help" for more information.
    > require("util").isDeepStrictEqual({'name': 'john'}, {'sex': 'male'})
    false
    > require("util").isDeepStrictEqual({'sex': 'john'}, {'sex': 'male'})
    false
    > require("util").isDeepStrictEqual({'sex': 'male'}, {'sex': 'male'})
    true
    
  3. 这是我的代码:

    class App extends Component {
    constructor(props) {
    super(props);
    var util = require('util');
    var obj1 = {name: 'john'};
    var obj2 = {sex: 'male'};
    var result = util.isDeepStrictEqual(obj1, obj2);
    }
    

我不知道你是否做过,所以先做这个util npm

npm install util

再加上@3limin4t0r的答案,我认为不应该在构造函数中声明util。

将其作为类之外的全局常数

例如

const util = require('util');
class Foo {
constructor() {
this.a = 42;
}
bar(callback) {
callback(null, this.a);
}
}
const foo = new Foo();
const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));
naiveBar.call(foo).then((a) => console.log(a)); // '42'
const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'

这是在Util doc(isDeepStrictEqual(下面promisify的例子

因此,可以将其用作全局常量,也可以像在命令行中使用的那样直接使用它。

最新更新