我想要动态加载到入口点的 Webpack 捆绑模块

2024-04-15

下面的代码似乎使用动态导入 https://webpack.js.org/guides/code-splitting/#dynamic-imports:

(function executeApplication(): void {

  const loadDataButton: HTMLElement | null = document.getElementById("LoadDataButton");
  if (loadDataButton !== null) {
    loadDataButton.addEventListener("click", (): void => {
      (async function handler(): Promise<void> {
        console.log("Checkpoint 1");
        const loadedValue: string = await loadDataOnDemand();
        console.log(loadedValue);
      })().catch((): void => { /* */ });
    });
  }
})();


async function loadDataOnDemand(): Promise<string> {

  console.log("Checkpoint 2");
  const MODULE: { default: string; DYNAMICALLY_LOADED_CONST_FROM_TS_MODULE: string; } =
      await import("./DynamicLoadingTesting/TypeScriptModuleForDynamicLoading");
  console.log("Checkpoint 3");
  console.log(MODULE);


  return MODULE.DYNAMICALLY_LOADED_CONST_FROM_TS_MODULE;
}

然而实际上TypeScriptModuleForDynamicLoading.ts已捆绑到入口点:

FrontendLogicPreProcessingTesting:
  asset FrontendLogicPreProcessingTesting.js 11.2 KiB [emitted] (name: FrontendLogicPreProcessingTesting)
  ./FrontendLogicPreProcessingTesting.ts 2.28 KiB [built] [code generated]
  ./DynamicLoadingTesting/TypeScriptModuleForDynamicLoading.ts 419 bytes [built] [code generated]
  FrontendLogicPreProcessingTesting (webpack 5.4.0) compiled successfully in 710 ms

没有 webpack 错误,并且浏览器中的输出似乎是正确的:

我的网络包配置:

{
  name: 'FrontendLogicPreProcessingTesting',
  context: 'D:\\IntelliJ IDEA\\XXXXX\\ProjectBuildingCommonTest\\00-Source\\FrontendLogicPreProcessingTesting'
,
  target: 'web',
  entry: {
    FrontendLogicPreProcessingTesting: 'D:/IntelliJ IDEA/XXXXX/ProjectBuildingCommonTest/00-Source/FrontendLogic
PreProcessingTesting/FrontendLogicPreProcessingTesting.ts'
  },
  output: {
    path: 'D:\\IntelliJ IDEA\\XXXXX\\ProjectBuildingCommonTest\\01-DevelopmentBuild\\FrontendLogicPreProcessin
gTesting',
    publicPath: './',
    filename: '[name].js',
    chunkFilename: 'loading_on_demand/partial__[id].js'
  },
  mode: 'development',
  watch: true,
  devtool: 'eval-cheap-source-map',
  module: {
    rules: [
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object], [Object],
      [Object]
    ]
  },
  resolve: {
    extensions: [ '.mjs', '.js', '.ts' ],
    alias: { vue: 'vue/dist/vue.common.js' }
  },
  plugins: [
    DefinePlugin { definitions: [Object] },
    ForkTsCheckerWebpackPlugin { options: [Object] },
  ],
  optimization: { minimize: false, emitOnErrors: true }
}

我使用 webpack 5.x.x.,但在使用 4.x.x 时遇到同样的问题。

我的打字稿配置:

{
  "compilerOptions": {

    "target": "es2017",
    "strict": true,

    "module": "CommonJS",
    "moduleResolution": "node",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "allowJs": false,

    "experimentalDecorators": true,

    "baseUrl": "./",
    "paths": {

    },

    "noUnusedParameters": true,
    "noImplicitReturns": true
  }
}

哪些动载条件没有得到满足?


您当前正在使用module: "CommonJS" inside tsconfig.json,这将导致所有动态import()转变为require()在 Webpack 真正看到它们之前调用。为了让 Webpack 能够生成新的块,Webpack 必须能够看到动态import() calls.

Setting module: "esnext"会让它如此动态import()没有转变为require(),因此 Webpack 可以正确处理它们。

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

我想要动态加载到入口点的 Webpack 捆绑模块 的相关文章

  • Javascript 基本继承与 Crockford 原型继承

    我对 Crockford 推荐的继承感到困惑 Crockford 方法和通用 默认 方法之间的主要区别是什么 Crockford method function object o function F F prototype o retur
  • jQuery:检查字段的值是否为 null(空)

    这是检查字段值是否为的好方法null if person data document type value NULL 或者 还有更好的方法 字段的值不能为空 它始终是字符串值 该代码将检查字符串值是否为字符串 NULL 您想检查它是否是空字
  • 将 showModalDialog() 的内容添加到剪贴板 Google 脚本

    当我单击按钮时 我已将格式化数据添加到模态对话框中 我想要的内容showModalDialog 当我单击按钮时也会自动添加到剪贴板 模态是用下面的代码生成的 并且temp是我想要添加到剪贴板的输出 Output to Html var ht
  • 仅隐藏输入字段的内容

    我有一个与输入字段重叠的跨度 当您在输入字段中键入内容时 它会更新其内容 尽管我将跨度完美地定位在输入文本上 但您仍然可以看到文本更加粗体并且字母更粗 field nr 1 with span nr 2 without 我尝试隐藏整个输入字
  • Socket IO聊天例子很慢

    我是 Node js 和 Socket IO 的新手 我想尝试一下解释的示例 https socket io get started chat https socket io get started chat 我做了我必须做的一切 它起作用
  • assessionid 名称更改

    如果我有一种简单的改变方法 我的生
  • jquery是如何实现$(document).ready()的?

    jquery是如何实现的 document ready 当然我可以阅读代码 但我正在寻找这个概念 概念 jQuery ready http api jquery com ready 虽然 JavaScript 提供了在渲染页面时执行代码的
  • DOM 属性更改时触发事件

    有没有办法在属性更改时触发事件 可能是自定义的 比方说 当IMG src或DIV的innerHtml发生变化时 注意 自 2012 年起 突变事件已从标准中删除 现已弃用 有关如何使用其替代品 请参阅其他答案或文档 MutationObse
  • Javascript查找伪元素

    所以我一直在努力CSS 选择器引擎 https github com alpha123 Puma 并且我想支持伪元素 before after selection first line 等 我注意到 Slick Sizzle 和其他一些流行
  • 为什么这个标题图形不随世界更新

    对于以下内容 我很高兴组合框默认为世界 但当收音机被点击时 我也希望标题移回 世界 我该怎么做 我有这个笨蛋 http plnkr co edit 9FXJXVqLZLPFdDrmVJez p preview http plnkr co e
  • useReducer 未同步更新状态的问题

    根据React docs 当你有复杂的情况时 useReducer 通常比 useState 更好 涉及多个子值或下一个状态时的状态逻辑 取决于前一个 1 有人可以解释一下为什么吗useReducer不是同步更新状态吗 const redu
  • 带有 Form 和 $setPristine 的 Angular 1.5 组件

    我正在尝试在 Angular 1 5 的组件中使用表单 我的表单可以正常工作 因为我有模型绑定并且可以在提交时获取数据 所以我已经完成了 90 的目标 缺少的是能够使用 setPristine 正确重置表单 我尝试了几种方法 第一种方法是将
  • 使用 webpack 动态提供图像

    我有一个关于 webpack 和服务图像的问题 我有一个 webpack 配置 它构建了一个 React webapp 并且还提供来自特定文件夹的 jpg 文件 但是 如果我从我的网络应用程序下载新图像并将其添加到此文件夹中 会发生什么情况
  • javascript检测字符串是否只包含unicode表情符号[重复]

    这个问题在这里已经有答案了 我正在使用以下函数来替换字符串中的表情符号 并且效果很好 function doEmoji s var ranges ud83c udf00 udfff U 1F300 to U 1F3FF ud83d udc0
  • 如何为webpack使用自己的jade文件?

    我是 webpack 的新手 并试图弄清楚如何在 webpack dev server 中使用我自己的 html 文件以及我的 webpack 构建 在我的 app js 中我有 require jade index jade 但这并不意味
  • 如何在Nightwatch中测试伪元素的css属性

    我想使用 Nightwatch 测试我的网站上的背景图像是否正确 但它设置为 before 伪元素的背景 这是 CSS icon circle delete before content background url images svg
  • WEBHID API:条形码扫描仪未触发输入报告

    我几乎使用 Nintendo Switch Joy Con 控制器演示 我对其进行了一些修改以使其与我的条形码扫描仪一起使用 它就是行不通 如果行得通 则每 100 次站点刷新就会工作一次 console log text gt log t
  • JavaScript 中二维数组的 forEach() 和 Apply() 方法

    我有一个数组 其元素也是数组 每个数组包含三个元素 我想打电话给function calcMe a b c 对于我的主数组的每个元素使用forEach 方法 但我真的很困惑 不知道如何让它发挥作用 arr 1 5 4 8 5 4 3 4 5
  • jquery:卸载还是卸载之前?

    当用户从当前页面导航时 我想向服务器发布一条消息 我现在正在使用 unload 但结果不可靠 即使在其文档中也是如此 卸载事件的准确处理 各个版本都有所不同 浏览器 例如 某些版本 Firefox 的触发事件当 链接已被跟踪 但当 窗口已关
  • 预期的 catch() 或返回(promise/catch-or-return)

    我是 JavaScript 新手 这是我在 javascript 中第一个在 firebase 上部署函数的函数 得到这个错误 eslint Unexpected function expression prefer arrow callb

随机推荐

  • 使用 Linq 将列表框项值转换为 int

    我使用列表框显示数据库中表的内容 每个列表框项目都使用设置为友好名称的 Text 属性和设置为唯一 ID 列的 Value 属性进行填充 数据库结构可能类似于以下内容 CREATE TABLE GENERIC FRIENDLY NAME T
  • 独立于 Rails 在 HAML 文件中使用布局

    我的最终目标是创建几个静态 HTML 文件以交给其他人 但对于我的工作流程 我希望将 HAML 作为基本源文件 在这样做时 我希望至少在我这边能够干燥这个过程 现在我有很多页面最终将共享一个通用布局 我想知道如何合并这些布局 这是我当前的代
  • 在没有缓冲区的情况下将数据从 fstream 复制到 stringstream?

    无论如何 我可以从fstream 一个文件 到一个stringstream 内存中的流 目前 我正在使用缓冲区 但这需要双倍的内存 因为您需要将数据复制到缓冲区 然后将缓冲区复制到字符串流 直到删除缓冲区为止 数据都会在内存中复制 std
  • 使用 PHP SSH 连接到远程服务器

    我想做一个SSH使用 php 连接到远程服务器 我在 Linux CEntOS 上使用 php 5 3 到目前为止我所做的 connection ssh2 connect 192 168 1 22 22 ssh2 auth password
  • 使用 foreach 迭代对象列表

    我看到这样的说法 当在对象列表上使用 foreach 时 迭代的对象实例is not可编辑 但对象属性are可编辑 有人可以用一个简单的例子来演示上述内容吗 让我重新表述一下 因为我发现了两个版本的说法 也许这个说法更清楚 当对元素列表使用
  • .Net Core动态dbContext

    我有两个 DbContext 共享同一个存储库 以下是我现有的代码 启动 cs services AddDbContext
  • redshift 上 array_agg() 或 string_agg() 的替代方案

    我正在使用此查询来获取聚合结果 select bs string agg wbns from bag group by 1 我收到此错误 运行查询时出错 函数 string agg 字符变化 未知 不存在提示 没有函数与给定的名称和参数匹配
  • Hibernate/JPA中涉及继承时如何指定列名?

    我想我想在这里鱼和熊掌兼得 但我们会看看是否有一个合理的解决方案来满足我正在寻找的问题 我有一个 Spring Boot JPA Hibernate 应用程序 它将与 MySQL 作为其后备存储进行通信 我有几种情况 从 OOP 的角度来看
  • 带有问号的奇怪 C# 语法

    private enum E Week Mon 0 Tue 下面的代码是什么意思 E Week week null 是否等于下面的代码 的作用是什么 在这里签名 E Week week null 您的代码正在使用所谓的可空类型 http m
  • 在Python中查找模块的路径而不导入

    我见过几种通过首先导入模块来查找模块路径的方法 有没有办法在不导入模块的情况下做到这一点 Using pkgutil http docs python org library pkgutil html module gt gt gt imp
  • Java字符串内部表示

    我知道Java对String的内部表示是UTF 16 什么是java字符串表示 https stackoverflow com questions 9699071 what is the javas internal representio
  • 如何在 ng-template 中使用反应式表单

    我刚刚开始使用 Angular 4 我需要开发一个 CRUD 网格 用户可以在其中添加 编辑或删除行 在我的研究过程中 我发现这篇文章展示了如何创建网格以及操作 具有 CRUD 操作的 Angular 4 Grid http www dot
  • Angularjs $state 在新选项卡中打开链接

    我正在尝试使用 state go 函数实现 在新选项卡中打开链接 功能 如果有这样的东西那就太棒了 state go routeHere parameter1 parameter reload true newtab true or smt
  • Ansible Expect 模块无法匹配字符串/正则表达式脚本问题

    我正在尝试通过 Ansible 在 Vagrant 机器中自动安装脚本 我尝试了很多方法在网络上寻找解决方案 但文档和示例非常薄弱 我试图安装的脚本提示了我试图以编程方式回答的问题Ansible 期望模块 Ansible 任务 名称 运行
  • Apache Ignite - 执行器中的池大小

    我正在尝试使用基于集群的执行器服务 获取启用集群的执行器服务 ExecutorService exec ignite executorService 有没有办法设置执行程序服务池中的线程数 希望作业将以循环方式在集群中的每个节点中执行 Th
  • python 请求特定 SNI 证书的“证书验证失败”

    多年来我一直在几乎所有项目中使用 python requests 框架 但还没有遇到过这样的问题 这只发生在网站上www pagedna com据我所知 要重现的代码示例非常简单 import requests requests get h
  • 如何将行添加到数据框中仅修改某些列

    为了准备用于绘图的数据 我需要向数据添加一个新行 我有这个数据框 df lt data frame test id c 1 1 1 1 test nr c 1 1 1 1 region c A B C D test value c 3 1
  • 使用两个数据库的单个 Django 应用程序

    如何在 Django 中配置托管在两个不同数据库中的模型 到目前为止 我已经在出色的 Django 环境中设置了 3 个数据库 我的一个应用程序使用Router https docs djangoproject com en dev top
  • Cordova 签名的 apk 在闪屏后产生空白屏幕

    Cordova 调试构建工作正常 但是签名 apk 在闪屏后会出现白屏 已经尝试创建新应用程序并使用发布密钥进行签名 但签名的 apk 也有同样的问题 cordova version 7 1 0 cordova platform andro
  • 我想要动态加载到入口点的 Webpack 捆绑模块

    下面的代码似乎使用动态导入 https webpack js org guides code splitting dynamic imports function executeApplication void const loadData