Устаревшее предупреждение: вызов асинхронной функции без обратного вызова является устаревшим. - как найти, где находится "функция:"?
Недавно я обновил свой node до 7.2.1 и заметил, что появляется предупреждение:
(node: 4346) Устаревшее предупреждение: вызов асинхронной функции без обратного вызова устарел.
Что это за 4346
для? У меня только 2000 строк в js файле, поэтому он не может быть номером строки. Где я могу найти код?
Ответы
Ответ 1
Вы можете использовать опции --trace-deprecation
или --throw-deprecation
.
Например:
node --trace-deprecation app.js
или
node --throw-deprecation app.js
Первая опция будет регистрировать трассировку стека, а вторая будет вызывать ошибку (которая, если не поймана, также будет записывать трассировку стека).
Кроме того, 4346
, скорее всего, идентификатор процесса.
Ответ 2
Я предпочитаю следующие два метода:
1
fs.writeFile('example.md', data, (error) => { console.log("Error!"); });
2
fs.writeFile('example.md', data, function (err) {
if(err){
throw err;
}
});
Ответ 3
Вам необходимо включить функцию обратного вызова для асинхронного метода (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
для получения дополнительной информации.
Ответ 4
получил почти такое же сообщение об ошибке:
(node: 13844) Ошибка: вызов асинхронной функции без обратного вызова является устаревшим. внутренний/процесс/warning.js: 21
Использование writeFileSync
вместо writeFile
решило проблему.