webpack 构建时出现 ERROR in newmodule.js TypeError: native requires are not allowed 怎么办?

在使用 webpack 进行前端项目构建时,有时会出现 ERROR in newmodule.js TypeError: native requires are not allowed 的错误提示。这个错误提示一般是由于使用了 Node.js 的原生模块,而 webpack 默认是不支持原生模块的。

那么,如何解决这个问题呢?下面我们来一步步了解。

什么是原生模块?

在 Node.js 中,原生模块是指由 Node.js 自带的模块,比如 fshttppath 等。这些模块可以直接使用 require 方法引入,而不需要进行安装。

为什么 webpack 不支持原生模块?

webpack 的设计目标是将前端代码打包成浏览器可用的代码,因此它默认不支持 Node.js 的原生模块。这是因为浏览器环境与 Node.js 环境有很大的不同,浏览器不支持 Node.js 的原生模块,如果将这些模块打包进浏览器可用的代码中,会导致浏览器无法正常运行。

如何解决原生模块问题?

使用 webpack 的 node 属性

webpack 提供了一个 node 属性,可以用来配置哪些 Node.js 的全局变量和模块是可用的。通过在 webpack 配置文件中设置 node: { fs: 'empty' },可以告诉 webpack 不要处理 fs 模块,避免出现 TypeError: native requires are not allowed 的错误。

-- -----------------
-------------- - -
  -- ---
  ----- -
    --- -------
  -
-

使用第三方模块替代原生模块

如果项目中必须要使用原生模块,可以考虑使用第三方模块来替代。比如,可以使用 memfs 来替代 fs 模块,xhr2 来替代 http 模块等。

-- -- ----- -- -- --
----- - ------- ------------------ - - ----------------
----- ------ - --- --------
----- -- - --------------------------

使用插件

还可以使用插件来解决原生模块问题。比如,可以使用 webpack-node-externals 插件来排除 Node.js 的模块,避免出现 TypeError: native requires are not allowed 的错误。

-- -- ---------------------- --
--- ------- ---------------------- ----------

-- -----------------
----- ------------- - ---------------------------------

-------------- - -
  -- ---
  ------- -------
  ---------- -----------------
-

总结

在 webpack 构建时出现 ERROR in newmodule.js TypeError: native requires are not allowed 的错误提示,一般是由于使用了 Node.js 的原生模块,而 webpack 默认是不支持原生模块的。可以通过使用 webpack 的 node 属性、使用第三方模块替代原生模块、使用插件等方式来解决这个问题。在实际项目中,需要根据具体情况选择最合适的解决方案。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/66148febd10417a2224c9b98


猜你喜欢

  • Sequelize 中递归查询父子关系的方法

    在前端开发中,经常需要对数据库中的数据进行查询和操作。其中,父子关系的查询尤为常见。而 Sequelize 是一个 Node.js 的 ORM 框架,可以方便地操作数据库,包括递归查询父子关系。

    7 个月前
  • 使用 Mongoose 进行数据校验的方法详解

    前言 在前端开发过程中,数据校验是必不可少的一环。Mongoose 是 Node.js 的一种 ORM 框架,可以方便地对 MongoDB 进行操作。在 Mongoose 中,我们可以使用其提供的数据...

    7 个月前
  • CSS Reset 使用中出现的边框样式叠加问题及解决方法

    在前端开发中,我们经常会使用 CSS Reset 来清除浏览器默认样式,以便更好地控制页面布局和样式。然而,在实际使用中,我们可能会遇到一个问题:CSS Reset 中的边框样式和我们自己定义的边框样...

    7 个月前
  • 解决响应式设计下的表格滚动问题

    在响应式设计中,表格是一个非常常见的组件。然而,当表格的内容过多时,会出现滚动条,并且滚动条会覆盖表格的表头,让用户很难阅读和理解表格内容。在本文中,我们将探讨如何解决响应式设计下的表格滚动问题。

    7 个月前
  • SASS 使用技巧:包含(@include)与继承(@extend)的区别

    SASS 使用技巧:包含(@include)与继承(@extend)的区别 在使用 SASS 进行前端开发时,@include 和 @extend 是两个常用的关键字。

    7 个月前
  • Promise 中的延时处理:setTimeout 和 setInterval

    在前端开发中,我们经常需要进行一些延时处理,例如在一定时间后执行某些操作,或者定时执行某些任务。在 JavaScript 中,我们可以使用 setTimeout 和 setInterval 来实现这些...

    7 个月前
  • Babel 编译器导致 React SSR 应用程序崩溃的解决方式

    背景 React 是一个非常流行的前端框架,它的服务器端渲染(Server Side Rendering,SSR)功能可以提高网站的性能和搜索引擎优化。但是,在使用 Babel 编译器时,可能会导致 ...

    7 个月前
  • Flexbox 布局实现三栏局中央宽度自适应及常见问题解决

    Flexbox 是一种强大的 CSS 布局模式,它使得前端开发者能够轻松地实现各种布局需求。本文将介绍如何使用 Flexbox 布局实现三栏局中央宽度自适应,并解决常见问题。

    7 个月前
  • 解决使用 Chai expect 断言时,undefined 值报错的问题

    在前端开发中,我们经常需要对代码进行单元测试,而 Chai 是一个流行的断言库,它提供了多种方式来进行断言。然而,在使用 Chai 进行断言时,我们有时会遇到 undefined 值报错的问题。

    7 个月前
  • 使用 Custom Elements 实现 React 和 Vue 组件的混合开发

    在前端开发中,React 和 Vue 是两个非常流行的框架。它们各自拥有自己的特点和优势,但是在一些项目中,我们可能需要同时使用这两个框架来开发页面。那么如何实现 React 和 Vue 组件的混合开...

    7 个月前
  • 如何使用 Jest 对 React 组件中的 props 和状态进行测试?

    在开发前端应用时,我们经常需要对 React 组件中的 props 和状态进行测试,以确保组件的行为符合预期。Jest 是一个流行的 JavaScript 测试框架,它可以帮助我们编写高效、可靠的测试...

    7 个月前
  • ES10 中的 Object.getOwnPropertyDescriptors 方法:如何获取一个对象的完整描述符信息?

    ES10 中新增了一个 Object.getOwnPropertyDescriptors 方法,它可以获取一个对象的完整描述符信息,包括该对象所有属性的描述符信息。

    7 个月前
  • Redis 中使用 Sorted Set 进行高性能计算

    Redis 是一个开源的内存数据结构存储系统,被广泛应用于缓存、消息队列、实时数据处理等场景。其中,Sorted Set 是 Redis 中一种非常有用的数据类型,它可以用来存储一个有序的元素集合,并...

    7 个月前
  • RxJS 实践:使用 catchError 自定义请求错误日志

    在前端开发中,网络请求是必不可少的一部分。然而,当请求失败时,我们需要对错误进行处理和记录,以便及时发现和解决问题。RxJS 中的 catchError 操作符可以帮助我们处理请求错误,并自定义错误日...

    7 个月前
  • Angular 应用中如何实现图片懒加载

    什么是图片懒加载 图片懒加载是一种优化网站性能的技术,它可以延迟加载图片直到它们进入用户的视野。这意味着当用户滚动页面时,只有在图片进入视野范围时才会加载它们,而不是一次性加载所有图片。

    7 个月前
  • 如何使用 Next.js 进行服务端渲染 (SSR)?

    在现代 Web 开发中,服务端渲染 (Server Side Rendering, SSR) 已经成为了一个非常流行的技术。它可以提高网站的性能和用户体验,特别是对于那些需要频繁变动的页面和应用程序。

    7 个月前
  • PM2 常见问题解决办法:如何设置 PM2 自动重启策略

    背景 在前端开发中,我们经常需要使用 PM2 来管理我们的 Node.js 应用程序。但是,有时候我们会遇到一些问题,比如应用程序意外崩溃或是意外关闭,这时候我们需要设置 PM2 自动重启策略来保证应...

    7 个月前
  • Sequelize 如何查询 JSON 类型的数据

    在前端开发中,经常需要处理 JSON 类型的数据。Sequelize 是一个 Node.js 的 ORM 框架,可以方便地操作数据库。在使用 Sequelize 查询 JSON 类型的数据时,我们需要...

    7 个月前
  • Mongoose 中的 virtual 属性及应用场景

    在使用 Mongoose 进行 MongoDB 数据库操作时,我们经常需要对数据进行一些处理,比如计算、格式化等。Mongoose 提供了 virtual 属性来满足这些需求。

    7 个月前
  • Mocha 测试框架中如何使用 Nock 进行 HTTP 请求 Mock

    在前端开发中,我们经常需要进行 HTTP 请求的测试,以保证我们的代码可以正确地处理网络请求。而在测试中,我们通常需要使用 Mock 数据,以模拟真实的请求响应。 Nock 是一个 Node.js 模...

    7 个月前

相关推荐

    暂无文章