如何让 webpack“实际上”忽略外部并依赖浏览器导入?

2024-01-06

我试图让 webpack 忽略导入,以便浏览器使用本机 ES6 import 语句而不是 webpack 导入它。我试图让 ffmpeg.js 直接导入,因为它在尝试捆绑 webpack 时崩溃,因为文件太大。

按照这里的答案(如何从 webpack 中排除模块,并使用 es6 导入它 https://stackoverflow.com/questions/52507232/how-to-exclude-a-module-from-webpack-and-instead-import-it-using-es6),我的代码在本地树中为 /ffmpeg/ffmpeg-mpeg.js 并验证了我的开发服务器可以访问为http://localhost:8080/ffmpeg/ffmpeg-webm.js http://localhost:8080/ffmpeg/ffmpeg-webm.js

然后我通过以下方式导入:

  import ffmpeg from '/ffmpeg/ffmpeg-webm.js';

并将其添加到我的 webpack 配置的外部部分:

  externals: {
    '/ffmpeg/ffmpeg-webm.js': 'ffmpeg',
  },

结果是一个看起来像这样的链接

webpack:///external "ffmpeg"

包含:

module.exports = ffmpeg;

然后失败并显示“未捕获错误:找不到模块?” (事实上​​,该错误已硬编码在生成的文件中)

因此,这似乎假设有一个全局 ffmpeg 选项,然后将该模块映射到该选项,但我希望它让该行完全不受 webpack 影响,并将其留给浏览器。

正确的方法是什么?该页面上被否决的排除规则也不起作用。


Edit:

你可以使用这个:

import(/* webpackIgnore: true */'/ffmpeg/ffmpeg-webm.js').then(({default: ffmpeg}) => {
  //Do what you want to do with ffmpeg
});

这将阻止 webpack 编译导入(因此它将是常规的 ES6 导入)


原答案:

您忘记在页面中包含外部脚本。

另外,由于您指出您的文件非常大,我建议将其延迟包含

所以你需要添加

<script src="/ffmpeg/ffmpeg-webm.js" defer></script>

到应用程序的头部,然后您将使用带有回调的导入函数稍微不同地导入它

import('/ffmpeg/ffmpeg-webm.js').then(ffmpeg => {
  //Do what you want to do with ffmpeg
});

小注意事项:externals key 不需要是文件的路径,它只是导入时使用的名称,因此如果您对路径感到困惑,请重命名它

module.export = {
  //...
  externals: {
    "ffmpeg-webm": "ffmpeg"
  }
}
//Then import
import('ffmpeg-webm').then(ffmpeg => {
  //Do what you want to do with ffmpeg
});

或者对于 Node js,您可以使用而不是使用外部

const ffmpeg = __non_webpack_require__('/ffmpeg/ffmpeg-webm.js')

请记住,这会将其转换为仅适用于 Node js 的正常需求

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

如何让 webpack“实际上”忽略外部并依赖浏览器导入? 的相关文章

随机推荐

  • 如何允许在 raphael 对象中输入文本,比如矩形?

    我创建了一个拉斐尔矩形 如下所示 var rect1 paper rect 100 100 100 100 现在 我希望当我单击矩形时会出现一个光标 并且允许用户输入 键入一些文本 我对 JS 和 Raphael 非常陌生 这不是拉斐尔的自
  • Spring:在上下文根之外提供静态资源

    在网络应用程序中 我需要提供位于应用程序上下文目录之外的静态内容 图像 整个应用程序架构要求我使用 Tomcat 来执行此操作 我以为我可以从 Spring 中受益
  • Nodejs 驱动程序支持哪些聚合游标方法?

    正如您从 Mongodb 2 6 中了解到的aggregate 操作返回一个游标 但是行为有点不同 http docs mongodb org manual reference method db collection aggregate
  • 垃圾收集是否在 GC.Collect() 之后立即运行? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 这个问题只是为了研究目的 我读过很多关于 C 的书籍 这个问题总是浮现在我的脑海中 据我了解 C 是托管代码 当 CLR 决定何时运行垃圾收
  • LaTeX 中的条件导入?

    我将记下大量的课堂笔记 然后将它们编译成 LaTeX 这样我就可以拥有优秀的文档供将来查看 我正在尝试组织一些事情 以便我可以拥有一堆包含讲座笔记的小文档 然后在学期结束时将它们编译成包含所有这些笔记的大文档 我过去曾成功地使用过 impo
  • 使用 Gradle 覆盖 GCM 权限包前缀

    我有一个 Gradle Android 项目 有 4 种产品风格 每种产品都有自己独特的包名称 这build gradle文件的性质非常简单 buildscript repositories mavenCentral dependencie
  • 将 DataTable 导出到 CSV 时出现逗号问题

    我采用了一些将 DataTable 转换为 CSV 文件的代码 它似乎工作得很好 除了在实际数据中使用逗号时 在这种情况下有没有办法显示逗号 这就是我所做的 StringBuilder sb new StringBuilder IEnume
  • 了解 gc.get_referrers

    我正在尝试跟踪 Python 2 7 中的内存泄漏 我找到了 gc get referrers 但不理解输出 删除后dying node 除了我在狩猎过程中创建的列表之外 这应该删除所有引用 我的代码中有 gc collect print
  • 在 wpf 应用程序中安装窗口服务

    我有两个项目 wpf 和 windows 服务 我已经为 wpf 项目创建了设置 我想使用 wpf 项目安装来安装窗口服务 即一旦用户安装 wpf 项目 窗口服务将自动安装 是否可以 请建议 Thanks None
  • 从相机捕获的iphone图像自动旋转-90度

    以编程方式 我已在应用程序中从相机中获取图像 它已经很好地获取了 但是当我切换到另一个视图并关闭该视图时 我的图像会自动旋转 90 度 这种变化仅在我移动之后第一次发生 当我移动时 没有发生任何变化意味着图像保持在 90 度状态 并且仅当我
  • 如何在 T-SQL 中用年、月、日计算年龄

    在 T SQL SQL Server 2000 中计算某人年龄 以年 月和日为单位 的最佳方法是什么 The datediff函数不能很好地处理年份边界 而且将月份和日期分开将是一个麻烦 我知道我可以相对轻松地在客户端完成此操作 但我希望在
  • PyQt:QGraphicsView中的鼠标事件

    我想用 PyQt 用 Python 编写一个简单的程序 我有一个 QGraphicsScene 我想执行以下操作 使用两个单选按钮有 2 个选项 用于生成点 这样 如果有人单击场景 就会出现一个椭圆 用于选择点 这样 如果有人单击某个点 将
  • 如何从 Linux 帧缓冲区获取 RGB 像素值?

    我想使用 Linux 以最有效的方式获取屏幕像素的 RGB 值 所以我决定使用C中的framebuffer库 fb h 访问帧缓冲设备 dev fb0 并直接从中读取 这是代码 include
  • 如何在VS Code的集成终端中正确显示unicode字符?

    根据标题 我似乎无法让 VS Code 集成终端正确显示 unicode 字符 它们在集成终端中始终显示为问号 我已确保文件以编码方式保存UTF 8这似乎是迄今为止我所看到的所有答案中建议的唯一解决方案 但无济于事 System out p
  • 调试错误 -Abort() 已被调用

    我正在尝试输入一个数字 n 并获得大于或等于 n 的最小超级幸运数字 超级幸运 它的十进制表示包含等量的数字 4 和 7 例如 数字 47 7744 474477 是超级幸运 而 4 744 467 则不是 这是我的代码 include
  • Swiftui 列表行单元格在视图出现后设置填充

    我有一个标准列表 仅包含一个文本 右侧有用于导航的箭头 但是在列表加载并出现在屏幕上后 列表会适应单元格 我认为它们在左侧和右侧添加了填充 但这看起来不太好 所以看起来列表滞后 List ForEach 0
  • 两个文件夹之间的 Git 合并,而不是分支

    假设以下场景 我有一个 git 项目 其目录名为project 在这个目录中我做了一些提交 然后 与cp r我将此目录复制到一个名为的目录project with feature b 即我手动创建了一个分支 现在我想合并这两个文件夹 就像它
  • 使用 dtmf 进行 Windows Phone 电话通话

    我知道使用电话呼叫任务 我们可以通过填写电话号码字段以编程方式拨打电话 示例代码可能是 PhoneCallTask phn new PhoneCallTask phn PhoneNumber 9807689 657 phn show 但我的
  • 使用 FFMPEG 从图像生成 2-fps mp4

    需要从一系列图像创建视频 视频需要具有低帧速率 这是我用来创建视频的命令 ffmpeg exe r 2 i images 3d jpg vcodec libx264 pix fmt yuvj420p output mp4 问题是 虽然通过
  • 如何让 webpack“实际上”忽略外部并依赖浏览器导入?

    我试图让 webpack 忽略导入 以便浏览器使用本机 ES6 import 语句而不是 webpack 导入它 我试图让 ffmpeg js 直接导入 因为它在尝试捆绑 webpack 时崩溃 因为文件太大 按照这里的答案 如何从 web