NodeJS 如何使用'缓冲'在电子?

ukxgm1gy  于 11个月前  发布在  Node.js
关注(0)|答案(1)|浏览(100)

我试着在electron中使用gray-matter,但是有utils.js:36 Uncaught ReferenceError: Buffer is not defined。有没有办法在electron中使用Buffer

wgxvkvu9

wgxvkvu91#

这可能是过去很有用的原始海报,但数字我会提供我可以为那些谁发现这像我一样。
虽然我没有在我的项目中使用gray-matter,但我在为我的Electron前端(在我的情况下是React)暴露NodeJS的Buffer对象时遇到了类似的问题。最好的方法是通过使用Electron预加载脚本来暴露Buffer对象。
在preload.js中

const { contextBridge } = require('electron');

contextBridge.exposeInMainWorld('nodeAPI', {
    createBuffer: (data) => Buffer.from(data)
});

字符串
然后在你的前端引用它如下。

const buffer = window.nodeAPI.createBuffer(event.target.result);


如果它对其他人也有用,这里有一个完整的使用它从前端获取一个文件时,从一个子组件检索到一个后端方法的数据库存储。

const uploadFile = async (fileName, file) => {
          if(file){
               const reader = new FileReader();
               reader.onload = async (event) => {
                    const buffer = window.nodeAPI.createBuffer(event.target.result);
                    try{
                         await window.electronAPI.addFile({
                              fileName: fileName,
                              file: buffer
                         });
                    }catch(err){
                         console.error('Error adding file: ', err);
                    }
               };
               reader.readAsArrayBuffer(file);
          }else{
               alert('Error saving file.');
          }
     };

相关问题