在Linux Ubuntu 16.04.1 LTS上从头开始安装nodejs(在2个不同的服务器上测试,但结果相同......)由于额外的奇怪字符“”,browserify会生成一个不正确的bundle.js。它仅在使用Web3模块时才会发生。我的浏览器在使用它时会抛出“意外的令牌”。
...
if (options.value > 0) {
var constructorAbi = abi.filter(function (json) {
return json.type === 'constructor' && json.inputs.length === args.length;
})[0] ||Â {}; // <===============================
if (!constructorAbi.payable) {
throw new Error('Cannot send value to non-payable constructor');
}
}
...
这些是我安装的软件包:
sudo apt-get update
sudo apt-get install -y nodejs npm git
npm cache clear --force
npm install -g npm
// A version manager for node.
sudo npm install -g n
sudo n stable
installed : v7.4.0
sudo npm install -g browserify
sudo npm install -g crypto
npm i --save-dev crypto
sudo npm install -g ethereumjs-util
npm i --save-dev ethereumjs-util
sudo npm install -g ethereumjs-tx
npm i --save-dev ethereumjs-tx
sudo npm install -g web3
npm i --save-dev web3
sudo npm install -g buffer
npm i --save-dev buffer
我也尝试重新安装Web3,但结果相同:
sudo npm uninstall -g web3
sudo npm install -g web3
npm i --save-dev web3
我使用的模块如下:
vi main.js
var crypto = require("crypto");
var util = require("ethereumjs-util");
var Tx = require('ethereumjs-tx');
Web3 = require('web3');
Buffer = require("buffer").Buffer;
我发现它是Web3模块,它使bundle.js包含了奇怪的char。通过删除bundle.js上的怪异char,一切正常。
试图找出这是否是由于编码错误的NBSP造成的:
$ sed '25494q;d' bundle.js > line.txt
$ od -c line.txt
0000000 } ) [ 0
0000020 ] | | 302 240 { } ; \n
0000032
知道那个角色在那里的原因是什么? THX!