Nodejs 在命令行中执行 node 脚本时,使用--trace-deprecation 选项却没有打印出 trace

发布于 1周前 作者 htzhanglong 来自 nodejs/Nestjs

Nodejs 在命令行中执行 node 脚本时,使用–trace-deprecation 选项却没有打印出 trace

var Util = require(‘util’);

Util.print('fdfasd');

上面两行是我的代码,我在命令行下执行的命令是 node index.js --trace-deprecation

控制台打印结果: fdfasd(node:17893) DeprecationWarning: util.print is deprecated. Use console.log instead.

没有 trace !!! 我感觉我肯定是哪里理解有错误,但是翻了文档,查了 google,还是没结果,所以,我就是想问,为什么 trace 选项没效果呢,Util.print 是已经被废弃了,运行时会报错的。这一点我确定。


2 回复

已经解决了,是我把 option 的位置放错了,应该放在 node 之后,脚本名称之前,放在脚本名称之后是脚本执行被传入的参数。唉,怎么就为了这么个错误耽误了这么长时间


在 Node.js 中,--trace-deprecation 选项应该能够帮助你打印出有关已弃用功能的堆栈跟踪信息。如果你在使用该选项时没有看到预期的 trace 信息,可能是由于以下几个原因:

  1. 确保 Node.js 版本支持:首先,确认你的 Node.js 版本支持该选项。较旧的版本可能不支持。

  2. 脚本中确实存在弃用警告:你的脚本中必须包含触发弃用警告的代码。

  3. 命令行语法正确:确保命令行语法正确。例如:

    node --trace-deprecation your-script.js
    
  4. 检查是否有其他配置覆盖:有时环境变量或其他命令行选项可能覆盖或禁用了 trace。

下面是一个简单的示例脚本和如何使用 --trace-deprecation 选项:

example.js

// 触发弃用警告的代码示例(假设某个 API 已弃用)
const fs = require('fs');
const oldMethod = fs.readSync; // 假设 readSync 是一个已弃用的方法

命令行

node --trace-deprecation example.js

运行上述命令后,你应该会看到类似如下的输出,包含堆栈跟踪信息:

(node:12345) [DEP0005] DeprecationWarning: fs.readSync is deprecated. Use fs.promises.readFile after fs.promises is available.
    at example.js:3:19

如果仍然没有输出,请检查你的 Node.js 版本和脚本内容。

回到顶部