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
输出:
This Depricated function is working,
Callback
This Depricated function is working, along with return value
[DEP0014] DeprecationWarning: geekyFunction() is deprecated. Use geeksforgeeksFunction() instead
条件:
- 如果设置了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-deprecation和process.traceDeprecation 的优先级低于 –throw-deprecation cmd 标志和process.throwDeprecation属性。
参考: https://nodejs.org/api/util.html#util_util_deprecate_fn_msg_code