使用 Truffle 测试时找不到模块 'fs-extra'

Cannot find module 'fs-extra' when testing with Truffle

我正在阅读 Ethereum Pet Shop -- Your First DApp 上的教程,一切似乎都正常,直到我使用 truffle test 进行测试并出现以下错误:

Error: Cannot find module 'fs-extra'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:690:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.call (/Users/.npm-global/lib/node_modules/truffle/node_modules/@truffle/debugger/dist/external "fs-extra":1:18)
at r (/Users/.npm-global/lib/node_modules/truffle/node_modules/@truffle/debugger/dist/webpack/bootstrap:19:22)
[...]
Truffle v5.2.4 (core: 5.2.4)
Node v10.16.0

我尝试了 Module is extraneous npm 中的一些建议,但 Error: Cannot find module 'fs-extra' 坚持。

您需要将其添加到 package.json 并安装软件包。

  1. 或者运行

    npm install --save fs-extra
    

    --save 选项将为您将其添加到 package.json

  2. 或手动添加到package.json部分dependencies

    "dependencies": {
        "fs-extra": "^9.1.0"
    }
    

    然后安装

    npm install
    

    版本 9.1.0 是根据 npmjs

    的当前版本

fs-extra-package 应该作为 truffle 的一部分交付,我不建议将它安装到项目中。

要在 Ubuntu 上修复它,请按照以下步骤操作:

# stop apps/tools that using truffle - ganache-cli, etc.

# uninstall truffle
sudo npm uninstall -g truffle

# install truffle again
sudo npm install -g truffle

# check that fs-extra packaged installed
ls -lh  /usr/local/lib/node_modules/truffle/node_modules | grep fs-extra