./node_modules/axios/lib/adapters/http.js 中的错误

ERROR in ./node_modules/axios/lib/adapters/http.js

在我的 React 项目中安装和导入 axios 后出现此错误,有帮助吗?:

编译有问题:

./node_modules/axios/lib/adapters/http.js 中的错误 11:11-26

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\axios\lib\adapters' 中解析 'http' 您指的是 './http' 吗? 应在当前目录中解析的请求需要以“./”开头。 以名称开头的请求被视为模块请求并在模块目录中解析 (node_modules, H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules)。 如果更改源代码不是一个选项,还有一个名为 'preferRelative' 的解析选项,它也尝试在当前目录中解析这些类型的请求。

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "http": require.resolve("stream-http") }' - 安装 'stream-http' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback: { "http": 假}

./node_modules/axios/lib/adapters/http.js 中的错误 13:12-28

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\axios\lib\adapters'

中解析 'https'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "https": require.resolve("https-browserify") }' - 安装 'https-browserify' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback:{“https”:假}

./node_modules/axios/lib/adapters/http.js 中的错误 19:10-24

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\axios\lib\adapters'

中解析 'url'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "url": require.resolve("url/") }' - 安装 'url' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback: { "url": 假}

./node_modules/axios/lib/adapters/http.js 中的错误 21:11-26

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\axios\lib\adapters'

中解析 'zlib'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "zlib": require.resolve("browserify-zlib") }' - 安装 'browserify-zlib' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback:{“zlib”:假}

./node_modules/follow-redirects/index.js 中的错误 1:10-24

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\follow-redirects'

中解析 'url'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "url": require.resolve("url/") }' - 安装 'url' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback: { "url": 假}

./node_modules/follow-redirects/index.js 中的错误 5:11-26

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\follow-redirects' 中解析 'http' 您指的是 './http' 吗? 应在当前目录中解析的请求需要以“./”开头。 以名称开头的请求被视为模块请求并在模块目录中解析 (node_modules, H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules)。 如果更改源代码不是一个选项,还有一个名为 'preferRelative' 的解析选项,它也尝试在当前目录中解析这些类型的请求。

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "http": require.resolve("stream-http") }' - 安装 'stream-http' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback: { "http": 假}

./node_modules/follow-redirects/index.js 中的错误 7:12-28

找不到模块:错误:无法解析 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\follow-redirects' 中的 'https' 您指的是 './https' 吗? 应在当前目录中解析的请求需要以“./”开头。 以名称开头的请求被视为模块请求并在模块目录中解析 (node_modules, H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules)。 如果更改源代码不是一个选项,还有一个名为 'preferRelative' 的解析选项,它也尝试在当前目录中解析这些类型的请求。

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "https": require.resolve("https-browserify") }' - 安装 'https-browserify' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback:{“https”:假}

./node_modules/follow-redirects/index.js 中的错误 9:15-41

找不到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\follow-redirects'

中解析 'stream'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "stream": require.resolve("stream-browserify") }' - 安装 'stream-browserify' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback:{“流”:假}

./node_modules/follow-redirects/index.js 中的错误 11:13-30

未找到模块:错误:无法在 'H:\Github\arshwy\reactjs-laravel-simple-dashboard\frontend-react\node_modules\follow-redirects'

中解析 'assert'

重大变化:webpack < 5 用于默认包含 node.js 核心模块的 polyfill。 这已不再是这种情况。验证您是否需要此模块并为其配置一个 polyfill。

如果你想包含一个 polyfill,你需要: - 添加后备 'resolve.fallback: { "assert": require.resolve("assert/") }' - 安装 'assert' 如果你不想包含一个 polyfill,你可以像这样使用一个空模块: resolve.fallback:{“断言”:假}

我通过

解决了我的错误
npm audit fix --force

Webpack 5 不再默认包含节点 shim,因此我们必须 opt-in 我们想要的所有 shim。我们需要向我们的项目添加一些依赖项来完成此操作:

yarn add process browserify-zlib stream-browserify util buffer assert

安装后,修改您的 webpack.config 文件,如下所示

const webpack = require("webpack");

module.exports = {
  /* ... */

  resolve: {
    fallback: {
      http : require.resolve("stream-http"),
      https : require.resolve("https-browserify"),
      url  : require.resolve("url"),
      process: require.resolve("process/browser"),
      zlib: require.resolve("browserify-zlib"),
      stream: require.resolve("stream-browserify"),
      util: require.resolve("util"),
      buffer: require.resolve("buffer"),
      asset: require.resolve("assert"),
    }
  },
  plugins: [
    new webpack.ProvidePlugin({
      Buffer: ["buffer", "Buffer"],
      process: "process/browser",
    }),
  ]

  /* ... */
}

我通过 运行 这个命令

解决了这个错误

npm i url

版本 0.27 [最新] 不适用于我,所以我将其删除并安装了以前的版本,如下所示: “axios”:“^0.21.1” 它很适合我