【问题标题】:DeprecationWarning: Calling an asynchronous function without callback is deprecatedDeprecationWarning:不推荐调用不带回调的异步函数
【发布时间】:2018-01-09 18:04:57
【问题描述】:

我正在研究电子 + angularjs。当我使用id3js 从 mp3 文件中读取标签时,我开始遇到DeprecationWarning: Calling an asynchronous function without callback is deprecated. 的问题。

id3({file: pathtofile,type: id3.OPEN_LOCAL}, function(err, tags) {
            if (err) {
              console.log(err);
            } else {
              console.log(tags);}
});

代码从 mp3 文件中重新调整标签,但继续生成此弃用警告

【问题讨论】:

标签: javascript node.js asynchronous electron


【解决方案1】:

我通过更改 id3js 库文件来解决问题 他们使用fs.open,所以我将其更改为

fs.openSync(self.file, 'r', function(err, fd) {
                        if(err) {
                            return callback(err);
                        }
                        self.fd = fd;
                        callback();
                    });

没有问题了,我会在 git 上提交这个

【讨论】:

  • 这是一个糟糕的修复。除了可能在您的服务器启动代码中,您永远不想使用同步文件 I/O,因为这会破坏服务器的可伸缩性。如果 id3js 代码使用fs.open(),它必须使用回调。所以,你所展示的还没有意义。如果您向我们展示 id3js 中导致问题的代码(在您的问题中),我们可能会为您提供推荐的良好修复。
  • 加上fs.openSync() 甚至不接受回调,所以这段代码根本不起作用。它可能会删除警告,但不会正常工作。
  • @jfriend00 id3js中的代码fs.open(self.file, 'r', function(err, fd) { if(err) { return callback(err); } self.fd = fd; callback(); });
  • 该代码中没有丢失回调。因此,问题出在其他地方,可能在传递给此函数的任何回调中,因为您尝试修复实际上会阻止回调被调用。
猜你喜欢
  • 2023-04-10
  • 2018-04-11
  • 2017-05-02
  • 2017-08-27
  • 1970-01-01
  • 2018-03-27
  • 2019-05-09
  • 2015-09-08
  • 2017-11-27
相关资源
最近更新 更多