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

require('bignumber.js') fails in truffle test, npm ls -g shows it's installed (Windows)

我正在尝试用 truffle 测试 solidity 代码。由于从合同返回(或发送到)的数值是 BigNumbers 我想需要图书馆。我目前的测试是单线测试:

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 版本 4.0.6,npm 版本 5.6.0

我不知道为什么,但是在本地安装 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 中(当 运行 来自项目根目录时)。

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

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

如果找不到,会根据环境变量NODE_PATH继续查找。如果没有指定,它将不会搜索任何全局模块。

所以你可以检查你的NODE_PATH