require('bignumber.js')在松露测试中失败,npm ls -g显示它已安装(Windows)

时间:2018-06-07 18:57:11

标签: javascript npm solidity web3 truffle

我正在尝试用松露测试可靠性代码。由于(或发送到)合同返回的数字值是BigNumber,我想要求库。我目前的考试是单线:

let BigNumber = require('bignumber.js');

名为 hello_test.js

如果我运行npm ls -g | grep bignumber我可以看到+-- bignumber.js@7.2.1,所以它已经安装;但如果我尝试:

truffle.cmd test .\test\hello_test.js

我得到Error: Cannot find module 'bignumber.js'

发生了什么事?

Truffle version 4.0.6,npm version 5.6.0

2 个答案:

答案 0 :(得分:3)

这是节点需要如何工作的方式: require('xx')将搜索

./node_modules/xx.js
./node_modules/xx/index.js
./node_modules/xx/package.json

如果找不到,它将继续按环境变量NODE_PATH进行搜索。如果未指定,则不会搜索任何全局模块。

因此,您可以查看NODE_PATH

答案 1 :(得分:1)

我不知道为什么,但在本地安装bignumber.js软件包可以解决问题:

C:\project\> npm install bignumber.js
+ bignumber.js@7.2.1
added 1 package and moved 1 package in 4.222s

C:\project\> truffle.cmd test .\test\hello_test.js

  0 passing (2 ms)

bignumber.js包现在同时显示在npm ls -gnpm ls中(从项目根目录运行时)。