Browserify bundle.js因Â字符而抛出“意外的令牌”

时间:2017-01-19 12:20:05

标签: javascript node.js unicode syntax-error browserify

在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!

0 个答案:

没有答案