如何浏览模块 ethereumjs-tx?

How to browserify module ethereumjs-tx?

我有这个演示代码,我想对其进行分类:

var Tx = require('ethereumjs-tx')
var privateKey = new Buffer('e331b6d69882b4cb4ea581d88e0b604039a3de5967688d3dcffdd2270c0fd109', 'hex')

var rawTx = {
  nonce: '0x00',
  gasPrice: '0x09184e72a000', 
  gasLimit: '0x2710',
  to: '0x0000000000000000000000000000000000000000', 
  value: '0x00', 
  data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057'
}

var tx = new Tx(rawTx)
tx.sign(privateKey)

var serializedTx = tx.serialize()
console.log(serializedTx.toString('hex'))

我几乎成功地安装了 ethereum-tx,就像这样:

npm install -g ethereumjs-tx
    ...
    npm WARN enoent ENOENT: no such file or directory, open '/root/package.json'
    npm WARN root No description
    npm WARN root No repository field.
    npm WARN root No README data
    npm WARN root No license field.

我不确定这些警告消息是否重要,或者我应该忽略它们...

尽管如此,上面的代码在 nodejs 中运行正常。但是当尝试对其进行 broserify 时出现问题,创建一个文件 main.js 上面的代码和:

browserify main.js -o bundle.js
    Error: Cannot find module 'ethereumjs-tx' from 'myHomeDir'

我的 nodejs 有一个 ethereumjs-tx 的文件夹,我觉得没问题:

# ls -la /usr/local/lib/node_modules/ethereumjs-tx/
total 84
drwxr-xr-x  6 nobody root  4096 Jan 11 08:46 .
drwxr-xr-x  6 root   root  4096 Jan 11 08:46 ..
drwxr-xr-x  2 nobody root  4096 Dec 14 00:14 docs
drwxr-xr-x  2 nobody root  4096 Dec 14 00:14 examples
-rw-r--r--  1 nobody root  2028 Dec 14 00:14 fake.js
-rw-r--r--  1 nobody root  7395 Dec 15 03:40 index.js
-rw-r--r--  1 nobody root   600 Dec 14 00:14 karma.conf.js
-rw-r--r--  1 nobody root 16726 Dec 14 00:14 LICENSE
drwxr-xr-x 76 root   root  4096 Jan 11 08:46 node_modules
-rw-r--r--  1 nobody root  1187 Dec 14 00:14 .npmignore
-rw-r--r--  1 nobody root  3955 Dec 14 00:18 .package.json
-rw-r--r--  1 nobody root  4369 Jan 11 08:46 package.json
-rw-r--r--  1 nobody root  1871 Dec 15 03:40 README.md
drwxr-xr-x  2 nobody root  4096 Jan 11 08:46 test
-rw-r--r--  1 nobody root   599 Dec 14 00:14 .travis.yml

关于如何使此代码更友好的任何提示?我究竟做错了什么?谢谢!

您需要在本地安装任何模块才能对其进行浏览器化。至少,我没有找到任何选项来让 browserify 与全局安装的包一起工作。

因此,在项目的根目录中,您需要执行以下操作:

npm install ethereumjs-tx --save-dev

--save表示包不仅会下载到本地node_modules文件夹,还会修改你的package.json并记下依赖,所以再npm install 命令 package.json 将安装具有相同版本的 ethereumjs-tx

-dev表示该包将被保存为开发依赖,这意味着不是您的应用程序在生产中使用的包作为节点应用程序:so您捆绑的每个要在客户端使用的包都应该是一个 devDependency。

当您 运行 npm install 时,npm 期望存在有效的 package.json。 npm 抱怨的警告是由于您的项目中不存在此 package.json,因此没有某些 package.json 字段,例如 description。当你没有 package.json 时,初始化 package.json 的一种简单方法是 运行 npm init.

事实上,您似乎是在“/root/”处创建包,这似乎是 Web 项目的一个重要位置。