如何浏览模块ethereumjs-tx?

时间:2017-01-11 08:07:53

标签: javascript node.js browserify blockchain ethereum

我有这个演示代码我想要broserify:

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

有关如何使此代码更加严格的任何提示?我究竟做错了什么? THX!

1 个答案:

答案 0 :(得分:4)

您需要在本地安装任何模块才能对其进行浏览。至少,我没有找到任何让浏览器使用全局安装包的选项。

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

npm install ethereumjs-tx --save-dev

--save表示该软件包不仅会下载到本地node_modules文件夹,还会修改您的package.json并记下依赖项,因此任何进一步npm install命令package.json将使用相同版本安装ethereumjs-tx

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

当您运行npm install时,npm期望存在有效的package.json。 npm抱怨的警告是由于您的项目中不存在此package.json,因此没有package.json字段,例如description。在没有package.json时初始化npm init的简便方法是运行int fac(int n) { return n==0 ? 1 : n * fac(n-1); }

事实上,您似乎正在'/ root /'创建捆绑包,这似乎是Web项目的一个临时位置。