#javascript #node.js #electron #fs
#javascript #node.js #electron #fs
Вопрос:
function openFileDialog() {
dialog.showOpenDialog(win, {
properties: ['openFile']
} , filepath => {
if (filepath) {
fs.writeFile('path.txt', filepath, function (err, data) {
if (err) console.log(err);
});
scanFile(filepath)
}
})
}
function scanFile(filepath) {
if(!filepath || filepath[0] == 'undefined') return;
console.log(filepath)
fs.readFile(filepath,"utf8", (err,data) => { // ----> *ERROR*
if(err) console.log(err);
var arr = [];
if (data.substr(-4) === '.mp3' || data.substr(-4) === '.m4a'
|| data.substr(-5) === '.webm' || data.substr(-4) === '.wav'
|| data.substr(-4) === '.aac' || data.substr(-4) === '.ogg'
|| data.substr(-5) === '.opus') {
arr.push(files[i]);
}
var objToSend = {};
objToSend.files = arr;
objToSend.path = filepath;
win.webContents.send('selected-files', objToSend)
})
}
Я пытался создать приложение electron music Player. В качестве первого шага необходимо открыть мой файл. Когда я открываю файл, «Ошибка типа [ERR_INVALID_ARG_TYPE]: Аргумент «path» должен быть типа string, Buffer или URL. Полученный тип не определен » произошла ошибка, и сообщение об ошибке показало, что scanFile(filepath), fs.ReadFile(~~) вызвали ошибку. Как я должен это исправить?
Комментарии:
1. Что делает:
console.log(filepath)
выводит? Поскольку ошибка очевидна, вы передаете что-то, что не является строкой, буфером или URL.2. @MarcosCasagrande Ах, это просто проверка кода. Я забыл стереть. Спасибо 🙂
Ответ №1:
Первая строка scanFile
гласит:
if(!filepath || filepath[0] == 'undefined') return;
Для меня это указывает на то, что filepath
является массивом, а не строкой (или буфером, или URL-адресом). Проверьте выходные данные console.log
инструкции, чтобы убедиться, так ли это. Поскольку if
инструкция проверяет filepath[0]
, я бы начал с этого и обновил код для чтения fs.readFile(filepath[0],"utf8", (err,data) => {
, поскольку if
инструкция подразумевает, что filepath[0
] — это значение, которое вы должны использовать
Комментарии:
1. я получаю ту же ошибку от
readFile
,writeFile
иunlink
, если пользователь открывает диалоговое окно, но затем отменяет его, не выбрав файл. как избежать или устранить эту ошибку?