我该如何解决:“未捕获的ReferenceError:未定义缓冲区”

时间:2018-11-29 00:54:33

标签: javascript html node.js browserify ipfs

我正在尝试使用IPFS Api使用HTML库提交文件。为此,在将文件添加到IPFS之前,我需要缓冲输入。

我的问题是,我已经尝试过互联网上遇到的每个选项,以解决错误“ Uncaught ReferenceError:未定义缓冲区”。我已经重新安装了npm,Node,并没有成功使用browserify。

Problem 1 因此,我要做的是安装“ npm install buffer”并转到index.js所在的文件夹,并使用browserify尝试创建独立的buffer.js文件。

browserify index.js -o buffer.js

我试图将buffer.js文件包括在HTML文件的顶部,并且将错误更改为“未定义要求”。

Problem 2

这是我的HTML代码:

  <!DOCTYPE html>
<html>
  <head>
    <title>JavaScript file upload</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script src="./buffer.js"></script>
    <script src="https://unpkg.com/ipfs-api@9.0.0/dist/index.js"
    integrity="sha384-5bXRcW9kyxxnSMbOoHzraqa7Z0PQWIao+cgeg327zit1hz5LZCEbIMx/LWKPReuB"
    crossorigin="anonymous"></script>
  </head>
  <script type="text/javascript">
    function upload() {
      const reader = new FileReader();
      const buf = require('buffer');
      reader.onloadend = function() {
        const ipfs = window.IpfsApi('localhost', 5001) // Connect to IPFS
        buf = buffer.Buffer(reader.result) // Convert data into buffer
        ipfs.files.add(buf, (err, result) => { // Upload buffer to IPFS
          if(err) {
            console.error(err)
            return
          }
          let url = `https://127.0.0.1:5001/ipfs/${result[0].hash}`
          console.log(`Url --> ${url}`)
          document.getElementById("url").innerHTML= url
          document.getElementById("url").href= url
          document.getElementById("output").src = url
        })
      }
      const photo = document.getElementById("photo");
      reader.readAsArrayBuffer(photo.files[0]); // Read Provided File
    }
  </script>
  <body>
    <form action="/">
      <fieldset>
        <legend>Upload photo</legend>
        <input type="file" name="photo" id="photo">
        <button type="button" onclick="upload()">Upload</button>
      </fieldset>
    </form>
    </br>
    </br>
    <a id="url"></a>
    </br>
    </br>
    <img id="output">
  </body>
</html>

这是我的项目当前的样子:

Project Directory

如何通过识别本地HTML文件的“缓冲区”以将文件上传到Windows 10中的IPFS来使上述代码正常工作?

0 个答案:

没有答案