2017-01-11 24 views
1

У меня есть этот демо-код, который я хочу broserify:Как прорисовать модуль 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')) 

я установил Эфириум-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' 

My 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 

Любые подсказки о том, как получить этот код, переработаны? Что я делаю не так? Спасибо!

+2

Возможно, вы сохраните модуль в своих devDependencies с помощью 'npm i -save-dev moduleName', чем вы можете использовать' var tx = require ("moduleName") ' – DomeTune

+1

И объяснение qan для предупреждений: они просто говорят вам, что в вашем файле package.json отсутствует. Нет проблем. – DomeTune

ответ

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.

На самом деле кажется, что вы создаете пакет в '/ root /', который кажется местом нахождения для веб-проекта.

+1

ответ был уже в комментариях, но действительно приятное объяснение :-) – DomeTune