📜  Node.js util.deprecate() 方法

📅  最后修改于: 2022-05-13 01:56:41.500000             🧑  作者: Mango

Node.js util.deprecate() 方法

util.deprecate() (在 v0.8.0_ 中添加的方法是 util 模块的内置应用程序编程接口,它包装了fn (可能是一个函数或类),使其被标记为已弃用。当util. deprecate()方法被调用,它返回一个使用 'warning' 事件发出 DeprecationWarning 的函数。第一次调用返回的函数时,发出警告并打印到 stderr。一旦发出警告,然后包装函数被调用。如果在多次调用“ util.deprecate() ”中提供相同的可选代码,则仅发出一次警告。

句法:

util.deprecate(fn, msg, )

参数:此函数接受三个参数,如上所述,如下所述:

  • fn:被弃用的是< 函数>。
  • msg:当调用已弃用的函数时,需要显示“警告消息”<字符串>。
  • 代码:它是一个弃用代码<字符串>,与弃用警告一起打印。一些已弃用的 API 是 DEP0001、DEP0001、...、DEP0143。

返回值:返回包装后发出警告的弃用函数,即在运行完整函数后,警告消息与弃用的API一起返回。

示例 1:文件名:index.js

// Node.js program to demonstrate the 
// util.deprecate() method 
  
// Import the util module 
var util = require('util');
  
var depricateFunction = util.deprecate(
  
    // Function which is depricated
    function () { },
  
    // Warning message that is 
    // printed to stderr
    "someWarningMessage",
  
    // Deprecated API
    'Deprication API'
);
  
// Function call
depricateFunction();

使用以下命令运行index.js文件:

node index.js

输出:

[Deprication API] DepricationWarning: someWarningMessage

示例 2:文件名:index.js

// Node.js program to demonstrate the 
// util.deprecate() method 
  
// Import the util module 
var util = require('util');
var outerValue = "along with"
  
var geekyFunction1 = util.deprecate(() => {
    console.log("This Depricated function is working, ");
},
    // The arrow function which is depricated
    "geekyFunction() is deprecated. Use "
        + "geeksForGeeksFunction() instead",
  
    // The warning message that is printed
    // to stderr
    'DEP0014' // Deprecated API
);
  
var geekyFunction2 = util.deprecate(function (call) {
    console.log("This Depricated function is working, ", 
            outerValue, call());
},
    // The function which is depricated
    "geekyFunction() is deprecated. Use "
        + "geeksForGeeksFunction() instead",
    // The warning message that is printed to stderr
    'DEP0014' // Deprecated API
);
  
// Function call
geekyFunction1();
  
// Function call
geekyFunction2(function call() {
    console.log("Callback");
    return "return value"
});

使用以下命令运行index.js文件:

node index.js

输出:

条件:

  • 如果设置了trace-deprecation/trace-warnings cmd 标志或process.traceDeprecation属性设置为true ,则堆栈跟踪和警告第一次打印到 stderr。
  • 如果设置了--throw-deprecation cmd 标志,或者process.throwDeprecation设置为true ,则会引发异常。
  • 如果process.noDeprecation属性设置为 true,或者使用 no-deprecation/no-warnings cmd 标志,则util.deprecate()不会执行任何操作。
  • trace-deprecationprocess.traceDeprecation 的优先级低于 –throw-deprecation cmd 标志和process.throwDeprecation属性。

参考: https://nodejs.org/api/util.html#util_util_deprecate_fn_msg_code