fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收类型未定义
Posted
技术标签:
【中文标题】fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收类型未定义【英文标题】:fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be one of type string, Buffer, or URL. Received type undefined 【发布时间】:2019-08-15 00:32:09 【问题描述】: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)
)
我尝试制作电子音乐播放器应用程序。第一步是打开我的文件。当我打开文件时,“TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收到的类型未定义“发生错误并且错误消息显示 scanFile(filepath)、fs.readFile(~ ~) 导致错误。我该如何解决?
【问题讨论】:
什么:console.log(filepath)
输出?因为错误很明确,所以您传递的不是字符串、缓冲区或 URL。
@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
] 是您应该使用的值
【讨论】:
如果用户打开对话框,我从readFile
、writeFile
和unlink
收到相同的错误,但随后在没有选择文件的情况下取消它。如何避免或解决此错误?以上是关于fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串、缓冲区或 URL 类型之一。接收类型未定义的主要内容,如果未能解决你的问题,请参考以下文章
谷歌或工具:AddVariableMinimizedByFinalizer TypeError
Python - TypeError:'int'对象不可迭代