在 Node.JS 浏览器代码中找不到缓冲区

jef*_*eff 5 javascript node.js browserify

我想在浏览器上使用 node.js 函数browserify。在我的代码中,有一行如下:

var x = new Buffer('abc..', 'hex')
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误ReferenceError: Buffer is not defined。我尝试[buffer-browserify][1]像这样安装并包含它:

var Buffer = require('buffer');
Run Code Online (Sandbox Code Playgroud)

但现在我得到了错误Error: Cannot find module 'buffer'..

那么 -how- 我可以Buffer在浏览器 javascript 中使用该类吗?

谢谢你的帮助,

更新:

为了使用 构建它browserify,我创建了一个input.js文件,如下所示:

var Buffer = require('buffer');
console.log(Buffer);
Run Code Online (Sandbox Code Playgroud)

我尝试构建它browserify input.js -o output.js并将其包含output.js在我的浏览器代码中,它会打印Buffer变量。但是,ReferenceError: Buffer is not defined当我尝试使用它时,我仍然遇到相同的错误 ( )。

Pet*_*ons 3

这是可以理解的,这是令人困惑的,但这里是如何让它发挥作用,并有一些解释性的要点。

1)创建源 JavaScript 文件

// app.js file
var privateKey = new Buffer('abcdef00', 'hex')
console.log(privateKey.toString('hex'))
Run Code Online (Sandbox Code Playgroud)
  • 不是你不需要这里打电话require('Buffer')。Browserify 将自动提供一些 Node.js 核心全局变量。由于Buffer在npm中是全局的(意味着你不必调用require它来使用它),所以你可以直接使用它。
  • 这会将密钥打印到控制台

2)从命令行浏览它

npm install --save browserify
$(npm bin)/browserify app.js > app-browser.js
Run Code Online (Sandbox Code Playgroud)

3)app-browser.js 来自 HTML 文件的引用

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Browserify buffer</title>
</head>
<body>
<h1>Browserify Buffer</h1>
<script src="app-browser.js">
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)