找不到模块:无法解析“async_hooks”

LDr*_*rof 6 node.js reactjs webpack

Failed to compile.

./node_modules/vm2/lib/resolver-compat.js
Module not found: Can't resolve 'async_hooks' in \node_modules\vm2\lib'
Error from chokidar (E:\node_modules): Error: EBUSY: resource busy or locked, lstat 'E:\pagefile.sys'
Error from chokidar (E:\node_modules): Error: EBUSY: resource busy or locked, lstat 'E:\pagefile.sys'
Run Code Online (Sandbox Code Playgroud)

当我尝试运行我的应用程序(react)时,突然出现了这个错误,甚至重新安装节点模块也不起作用,我也尝试重新安装节点和 webpack,但都不起作用。

Ian*_*ter 6

'async_hooks' 的问题是它只能在服务器端的节点中使用 - 例如,如果 webpack 尝试创建一个执行静态包分析的“通用包” - 它将无法在客户端找到 'async_hooks' (因此出现错误)。

但是:你可以像这样绕过它:

const async_hooks = eval("typeof window === 'undefined' && require('async_hooks')");
if (async_hooks) { /*.../ }
Run Code Online (Sandbox Code Playgroud)


msh*_*eer 5

我通过在 webpack 5 配置文件中添加以下后备解决了该问题

 resolve: {
  
  fallback: {
   
    async_hooks: false,
  },
}
Run Code Online (Sandbox Code Playgroud)


小智 1

需要问你是否已经下载了该项目或者你是否已经完成了?如果您已在项目目录中下载(由于存在 package.json),您可以简单地:

npm i
Run Code Online (Sandbox Code Playgroud)

该命令将安装 package.json 文件中表示的具有相同版本的所有软件包。

如果这个命令没有帮助你,你可以做另一件事:

使用以下命令全局更新 NPM:

    npm install -g npm@latest
Run Code Online (Sandbox Code Playgroud)

安装另一个版本的“async_hooks”。不幸的是,该软件包只有一个版本。