Javascript 如何从IpcMain返回数据

Javascript 如何从IpcMain返回数据,javascript,node.js,reactjs,object,electron,Javascript,Node.js,Reactjs,Object,Electron,我正在react中创建一个拖放,并使用electron发送和接收我的文件数据。我在console.log中收到一个senderId和sender。如何才能使数据显示出来?我错过了什么 Dropzone.js文件 const [fileNames, setFileNames] = useState([]); const handleDrop = useCallback(acceptedFiles => { setFileNames(_.map(acceptedFiles, ({ nam

我正在react中创建一个拖放,并使用electron发送和接收我的文件数据。我在console.log中收到一个senderId和sender。如何才能使数据显示出来?我错过了什么

Dropzone.js文件

const [fileNames, setFileNames] = useState([]);

const handleDrop = useCallback(acceptedFiles => {
  setFileNames(_.map(acceptedFiles, ({ name, type, path, size, lastModified, 
   lastModifiedDate }) => {
    return { name, type, path, size, lastModified, lastModifiedDate };
  }))
  let formData = new FormData();
  formData.append('uploadedFiles', fileNames);
}, [fileNames]);


useEffect(() => {
  ipcRenderer.send(FETCH_AUDIO_FILES, fileNames);
}, [fileNames]); 

useEffect(() => {
  const handler = (filesWithData) => {
  _.map(filesWithData, (event, data) => {
    console.log(data);
  })
};
ipcRenderer.on(METADATA_COMPLETED, handler);
  return () => ipcRenderer.removeListener(METADATA_COMPLETED, handler);
});
Index.js文件

 ipcMain.on(FETCH_AUDIO_FILES, (event, files) => {
    const promises = _.map(files, (file) => {
    return new Promise((resolve, reject) => {
    NodeID3.read(file.path, (err, tags) => {
       resolve({
         ...files,
         ...tags
      })
    })
  })
});

Promise.all(promises).then(results => { 
  event.sender.send(METADATA_COMPLETED, results);
 [![enter image description here][1]][1]});
});

无法通过IPC通道发送特殊对象,如文件:

参数将使用结构化克隆算法序列化,就像postMessage一样,所以原型链将不包括在内。发送函数、承诺、符号、弱映射或弱集将引发异常。
注意:不推荐发送非标准JavaScript类型,如DOM对象或特殊Electron对象,并将开始抛出以Electron 9开头的异常

--


您可以在渲染器进程中将文件作为Base64字符串、缓冲区或任何内容读取,然后将其发送到主进程,或者如果您希望拾取文件,可以在主进程中使用,例如?

使用react dropzone是否重要,是否需要使用filereader API?