控制台中的电子错误““路径”参数必须是字符串类型”

Posted

技术标签:

【中文标题】控制台中的电子错误““路径”参数必须是字符串类型”【英文标题】:Electron errors "The "path" argument must be of type string" in the console 【发布时间】:2021-01-27 00:05:04 【问题描述】:

《跨平台桌面应用程序》一书中的电子应用程序代码,旨在向浏览器显示用户文件目录,就像在桌面资源管理器应用程序中一样。

    const os = require('os'); 
    const fs = require('fs');
    const path = require('path');
    const async = require('async');
  


    function getHomeFolder ()
    return os.homedir();
    
    function retrieveFiles (folderPath,cb) 
       fs.readdir(folderPath,cb);
    


    function inspectAndDescribeFiles (filepath,cb) 
    let result = 
        file:path.basename(filepath),
        path:filepath,type:''
    ;
    fs.stat(filepath,(err,stat) =>
        if(err)
            cb(err);
        else
            if(stat.isFile())
                result.type = 'file';
            
            if(stat.isDirectory())
                result.type = 'directory';
            
            //cb(err,result);
          
    );
    
    function inspectAndDescribeFiles(folderPath,files,cb)
        async.map(files,(file,asyncCb) => 
            let resolvedFilePath = path.resolve(folderPath,file);
            inspectAndDescribeFiles(resolvedFilePath,asyncCb);
        ,cb);
    
    function displayFileIcons (file)
    const mainArea = document.getElementById('main-area');
    //const template = document.querySelector('item-template');
    //let clone = document.importNode(template.content, true);
    const img = document.querySelector('img').src = './assets/foldericon.png';
    const fileImg = document.querySelector('.filename').innerText =file.file;
    //clone.querySelector('img').src =`assets/$file.type.png`;
    //clone.querySelector('.filename').innerText =file.file;
    mainArea.appendChild(img);
    
    function displayFiles (err,files)
    if(err)
        return alert("Sorry we couldn't display your files");
    
    //files.forEach((file)=>console.log(file); );
    files.forEach(displayFileIcons);
    
    function main () 
    const folderPath = getHomeFolder();
    retrieveFiles(folderPath,(err,files) => 
       if(err) 
           return alert('Sorry we could not load your home folder');
       
     //    files.forEach((file) => 
          
     //     console.log(`$folderPath/$file`);
     //    );
     inspectAndDescribeFiles(folderPath,files,displayFileIcons);
     );
     
     main();

打印到开发者工具控制台的错误显示为“Uncaught (in promise) TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined. 我做错了什么?

【问题讨论】:

【参考方案1】:

这一行:inspectAndDescribeFiles(resolvedFilePath,asyncCb);inspectAndDescribeFiles 接受三个参数,而不是两个。

【讨论】:

以上是关于控制台中的电子错误““路径”参数必须是字符串类型”的主要内容,如果未能解决你的问题,请参考以下文章

图片上传错误:TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义

Nrwl:Storybook 给我错误 TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。收到未定义

axios “url”参数必须是字符串类型。收到类型未定义的错误

无服务器离线:“路径”参数必须是字符串类型。收到未定义

“路径”参数必须是字符串类型。接收到的类型未定义 - Ionic 4 - 仅限 Windows

GCP Secret Manager 抛出:“路径”参数必须是字符串类型