我有这个演示代码我想要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!
答案 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项目的一个临时位置。