wake-up-neo.com

DeprecationWarning: Das Aufrufen einer asynchronen Funktion ohne Rückruf ist veraltet. - Wie finde ich heraus, wo die "Funktion:" ist?

Ich habe vor kurzem meinen Knoten auf 7.2.1 aktualisiert und festgestellt, dass eine Warnung angezeigt wird:

(node: 4346) DeprecationWarning: Das Aufrufen einer asynchronen Funktion ohne Rückruf ist veraltet.

Wozu dient dieser 4346? Ich habe nur 2000 Zeilen in der js-Datei, daher kann es keine Zeilennummer sein. Wo finde ich den Code?

25
AGamePlayer

Sie können entweder die Optionen --trace-deprecation oder --throw-deprecation verwenden.

Zum Beispiel:

node --trace-deprecation app.js

oder:

node --throw-deprecation app.js

Die erste Option protokolliert eine Stack-Ablaufverfolgung, und die zweite gibt einen Fehler aus.

Außerdem ist 4346 höchstwahrscheinlich die Prozess-ID.

51
cartant

Sie müssen eine Rückruffunktion für die asynchrone Methode (in Ihrem Fall writeFile) angeben.

Zum Beispiel

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

woher

(error) => { });

ist die Rückruffunktion.

Ab Version: v7.0.0
Der Callback-Parameter ist nicht mehr optional. Bei Nichtbeachtung wird eine Warnmeldung ausgegeben.

Weitere Informationen finden Sie unter: https://nodejs.org/api/fs.html#fs_fs_writefile_file_file_file_data_options_callback .

3
NewDev2017

Ich bevorzuge die folgenden zwei Methoden selbst.

1:

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

2:

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

das liegt daran, dass Sie keinen Fehler abgefangen haben, indem Sie err callback verwenden, wie unten in Ihrem Code

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

Ich habe dieselbe Warnung bekommen 

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

und hatte das gleiche Problem, nicht zu wissen, welcher Teil meines Codes es verursachte. Also schaute ich mir den Code an, den ich kürzlich geändert hatte, und sah diesen folgenden Verdacht:

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

Problem war das cb (= 'callback') und die Kodierungsargumente sind in der falschen Reihenfolge .

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

Das Problem ist jedoch wirklich mit der ERRONEOUS-Warnmeldung. Ich musste ein Callback-Argument übergeben, aber nur eines, das nicht eine Funktion, sondern ein String war. Also wenn die Warnung hätte .__ 

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

... es wäre offensichtlich gewesen, was passiert ist. Natürlich wäre eine Zeilennummer in der Warnung auch Nizza. 

Der Punkt ist also, dass ich writeFile () NICHT ohne Ein Callback-Argument aufgerufen habe, das veraltet ist. Ich war Aufruf von writeFile () MIT EINEM FALSCHEN ARGUMENTENTYP. Das sollte ein FEHLER sein, keine Warnung.

0
Panu Logic

nur erwähnen:

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

hier müssen Sie function () {} erwähnen, da dies ein callback () ist, um Text asynchron zu schreiben.

Die Verwendung von writeFileSync führt einen synchronen Aufruf aus

0
Ayush Bansal