web-dev-qa-db-ja.com

DeprecationWarning:コールバックなしで非同期関数を呼び出すことは非推奨です。 -「関数:」がどこにあるかを見つける方法

最近、ノードを7.2.1に更新し、警告が来ることに気付きました。

(node:4346)DeprecationWarning:コールバックなしで非同期関数を呼び出すことは非推奨です。

これは何ですか 4346 ために? jsファイルには2000行しかないため、行番号にすることはできません。コードはどこにありますか?

30
AGamePlayer

--trace-deprecation または --throw-deprecation オプション。

例えば:

node --trace-deprecation app.js

または:

node --throw-deprecation app.js

最初のオプションはスタックトレースを記録し、2番目のオプションはエラーをスローします(キャッチされない場合は、スタックトレースも記録されます)。

また、4346はおそらくプロセスIDです。

54
cartant

Asynchronousメソッドのコールバック関数を含める必要があります(この場合はwriteFile)。

例えば

var fs = require('fs');
fs.writeFile('writeMe.txt',data,'utf8',(error)=>{
    // your code goes here
});

どこ

(error) => { });

コールバック関数です。

バージョンから:v7.0.0
コールバックパラメーターはオプションではなくなりました。それを渡さないと、非推奨の警告が出力されます。

詳細は https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback を参照してください。

5
NewDev2017

私は、次の2つの方法を好みます。

1:

fs.writeFile('example.md', data, (error) => { console.log("Error!"); });

2:

fs.writeFile('example.md', data, function (err) {
    if(err){
        throw err;
    }
});
2
Matti

ちょうど言及:

fs.writeFile('<your file name>',<your data>,function(){});

ここでは、function(){}に言及する必要があります。これは、非同期の方法でテキストを書き込むためのcallback()であるためです。

WriteFileSyncを使用すると、同期呼び出しが行われます

1
Ayush Bansal

これは、次のようなエラーコールバックをコードで使用してエラーをキャッチしていないためです。

fs.write('./abc.txt',function(err){
    if(err){
        return console.log(err);
    }
    else
    {
        console.log('success.!');
    }
});
0
jayesh sheta

同じ警告が出ました

[DEP0013] DeprecationWarning: Calling an asynchronous function without callback is deprecated. 

また、コードのどの部分が原因であるかわからないという同じ問題がありました。だから私は最近修正したコードを見て、このステートメントの容疑者を見ました:

 Fs . writeFile (path, aString, cb, encoding);

問題はcb(= 'callback')で、エンコード引数の順序が間違っていました。上記を次のように変更するだけで、警告を取り除きました。

 Fs . writeFile (path, aString, encoding,  cb);

しかし、問題は本当に誤った警告メッセージにあります。私はコールバック引数を渡しましたが、関数ではなく文字列でした。もし警告が言っていたら

"WWARNING: calling fs.writeFile() with a string-argument 
 where a function is expected"

...何が起こっていたかは明らかでした。もちろん、警告の行番号もいいでしょう。

そのため、コールバック引数なしでwriteFile()を呼び出していませんでしたが、これは非推奨です。間違ったタイプの引数でwriteFile()を呼び出していました。警告ではなくエラーです。

0
Panu Logic