__non_webpack_require__ 未定义

2024-04-19

我是 webpack 和 node 的新手,我想知道如何使用

__non_webpack_require__ 

功能。我去过webpack 的网站 https://webpack.js.org/api/module-variables/#__non_webpack_require__-webpack-specific-但我仍然对这个功能是什么以及如何使用它感到困惑。您能否提供此功能的用例的简短描述,以及如何在节点/反应应用程序中使用它?


Webpack 从入口点开始处理您在应用程序中使用的每个模块,包括您导入的每个模块(import or require)并将其包含在您的捆绑包中。这__non_webpack_require__是一个函数,它将产生一个简单的结果require call.

我们以这个入口点为例:

const processedByWebpack = require("./module");
const notProcessed = __non_webpack_require__("./non-webpack");

console.log(processedByWebpack);
console.log(notProcessed);

在这种情况下,webpack 将捆绑该应用程序并包含您导入的每个模块,在这种情况下只是./module.js。所以输出将是:

/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

const processedByWebpack = __webpack_require__(1);
const notProcessed = require("./non-webpack");

console.log(processedByWebpack);
console.log(notProcessed);


/***/ }),
/* 1 */
/***/ (function(module, exports) {

module.exports = "This module is bundled with webpack"


/***/ })
/******/ ]);

The ./module.js模块包含在捆绑包中,并且如果存在任何适用的规则,也将由任何加载器处理。另一方面,./non-webpack.js不包含在捆绑包中,并且 webpack 调用了require。这意味着./non-webpack.js将在执行时解决,如果它不可用或包含无效的 JavaScript,它将失败并出现运行时错误。

__non_webpack_require__是一种解决 webpack 处理所有问题的方法require来电。因为 webpack 捆绑了所有模块,所以它必须在编译时知道要包含哪些模块。这使得require比 Node.js 中的实际限制更严格。例如,您不能使用动态requires,这意味着您不能使用变量作为模块的路径(另请参阅webpack 通过 require 动态模块加载器 https://stackoverflow.com/questions/42797313/webpack-dynamic-module-loader-by-require)。例如:

// Path to module as a variable (could be an argument to a function)
const modulePath = "./module";

const processedByWebpack = require(modulePath); // Fails
const notProcessed = __non_webpack_require__(modulePath);

在常规的requirewebpack 会失败,因为它不知道要包含哪些模块来覆盖运行时可以引用的所有模块。在此示例中,这似乎很明显,但它甚至可以使用用户输入来确定要加载的模块。和__non_webpack_require__它只是创建一个require打电话,你将不得不处理可能的情况Module not found运行时异常。

你什么时候应该使用它?

可能永远不会。这是这些功能之一,应该被视为最后的手段,您需要避开 webpack 以获得一些动态模块解析。在大多数情况下,还有其他解决方案可以实现相同的目标(例如,通过使用将导入推迟到运行时)外部 https://webpack.js.org/configuration/externals/),其他一切都是边缘情况。

你会注意到__non_webpack_require__被转化为require称呼。这意味着它只能在 Node.js 中工作,并且在任何浏览器环境中都会失败,除非你有一个全局的require定义可能会或可能不会做一些特殊的事情。另一个缺点是它是特定于 webpack 的,当你想使用另一个工具(例如用于测试)时,它不起作用,或者你将很难尝试解决它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

__non_webpack_require__ 未定义 的相关文章

随机推荐

  • 消除在 Swift 中连续绘制 UIBezierPath 期间的滞后延迟

    下面的代码通过覆盖触摸来绘制线条 但是在连续不间断绘制的一段时间内开始出现滞后 手指在屏幕上移动的时间越长 这种滞后就会累积并变得更严重 结果是实际设备上的 CPU 几乎达到极限 CPU 98 并且绘图持续时间越长 生成的图像看起来就越不稳
  • 获取 Disqus html 代码以显示在源代码中以实现 SEO 目的

    最近开始在网站上使用 Disqus 想知道是否有任何方法可以让实际的 html 代码显示在源页面中 我注意到这个网站正在这样做 http adamkaras com blog 2009 06 24 disqus custom css sty
  • 鼠标悬停 div 时弹出消息

    尝试让一个简单的弹出窗口出现mouseover a div我按照答案使用 onmouseover 的描述框 https stackoverflow com questions 3559467 description box on mouse
  • 如何从 java.util.Map 转换为 Scala Map

    Java API 返回一个java util Map
  • 在 Fantasy Football 阵容优化器中添加 Flex 位置

    我编写了一些 R 代码来生成最佳的幻想足球阵容 最大化预计得分 该阵容受到用户输入的名单大小和选秀预算的约束 该数据框基于称为 球员 的数据框 该数据框由球员 位置 幻想点和选秀组成价值 我们的想法是在选秀之前使用这个工具 记住理想的阵容
  • 如何使用线性索引在多维数组中设置值

    使用线性索引在 C 多维数组中设置值的最有效方法是什么 例如给定一个数组 int arr2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 如何使
  • 用于图像中文本检测的霍夫变换算法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 霍夫变换算法是用于文本行检测和边缘检测的算法之一 霍夫变换算法可以用于检测图像中的文本吗 这道题在java中的流程或者实现应该是怎样的
  • 在 JavaScript 中将浮点数转换为整数的最佳方法是什么?

    在 JavaScript 中 有多种不同的方法可以将浮点数转换为整数 我的问题是哪种方法可以提供最佳性能 最兼容或被认为是最佳实践 以下是我所知道的几种方法 var a 2 5 window parseInt a 2 Math floor
  • 如何在 Android 中强制蓝牙 LE“正常工作”配对

    我有一个运行 GATT 服务器的嵌入式系统 我尝试通过 Android 连接该服务器 任务很简单 连接到 GATT 服务器 导航特征并验证读 写功能 问题是当我尝试连接 Android 应用程序时 它尝试与 Passkey 而不是 Just
  • Node.js 中硬编码的 mysql 用户和密码

    我将 mysql 与 node js 一起使用 像这样的东西 var mysql require mysql var connection mysql createConnection host localhost user me pass
  • Python 3 中的 FastCGI WSGI 库?

    对于 Python 3 是否存在可以将 WSGI 应用程序用作 FastCGI 服务器的库 这样 nginx 就可以将请求代理给它了 Python 3 文档 https docs python org 3 howto webservers
  • 重定向子进程标准输出

    我已经使用 test py 中的 Redir 类设置了标准输出重定向 如下 输出应在文本框中显示两个打印语句 但目前只有 Output1 被发送到文本框 Output2 在后面的控制台中打印 我想知道是否有办法重定向子进程的标准输出 我尝试
  • 启动套接字服务器会干扰 gRPC/http 客户端服务器通信 Golang

    我有一个很大程度上基于此的服务器tutorial https www golinuxcloud com go grpc crud api postgresql db 在我对其应用了额外的更改后 它工作得很好 但现在我想添加socket io
  • Java“重复局部变量” - 是在 Java 还是 Eclipse 中抛出错误?

    在下面的代码中 private static void example String inputString test switch inputString case test String outputString The string
  • 如何访问 Pyramid .ini 文件中的自定义部分?

    我目前正在为多种服务编写数据收集服务 可能有 5 个不同的 API 端点 具有不同的主机和端口号 我想为此创建一个设置文件 但认为 ini应该是一个更好的地方或者我是这么想的 我的development ini 看起来像这样 app mai
  • 如何让 Symfony 2 采用协议方案(http vs https)

    我有一个 Symfony 2 网站 在开发中运行在 HTTP 上 在生产中运行在 HTTPS 上 我注意到在生产中 Symfony 生成的 URL 仍然全部呈现为 HTTP 我怎么也可以 让框架采用当前提供网站的协议 可能是首选 或者 仅在
  • 如何检查视频文件是否大于2MB?

    假设我从 iPhone 库中获取了一个视频文件 我想检查视频文件不应大于 2MB 我无法使用 videoMaximumDuration 方法 因为如果任何视频是高清质量的 即使是 1 分钟持续时间的视频也可能会很大 有什么意见吗 urlvi
  • 为整个服务器/域强制使用 https

    我正在开发一些只能通过 https 访问的表单 我有一个专用服务器 有自己的证书和所有好东西 所以我的问题实际上有两个 1 强制每个请求都为 https 的最佳方法是什么 有没有比这个 htacess mod rewrite 规则更好的方法
  • Gmaps.js 停止工作

    从一天到另一天 Gmaps js 库停止工作 我创建了一张带有 3 个标记的地图 他们有 InfoWindows 我在 InfoWindow 中添加了一个小路由选项 您可以在其中输入您的地址中 Gmaps 将您引导至该点 现在 在过去两周内
  • __non_webpack_require__ 未定义

    我是 webpack 和 node 的新手 我想知道如何使用 non webpack require 功能 我去过webpack 的网站 https webpack js org api module variables non webpa