为什么 Babel 7 对浏览器使用 require() 函数,而浏览器对此一无所知?

2023-11-22

我尝试在我的模块中使用 d3.js。我使用 Babel 7 来转译我的代码源。 这是我的package.json:

{
  "name": "d3_learning",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "directories": {
    "test": "test"
  },
  "scripts": {
    "build": "babel src --out-dir dist --source-maps --minified --no-comments",
    "build:watch": "npm run build -- -w"
  },
  "babel": {
    "presets": [
      [
        "@babel/preset-env",
        {
          "useBuiltIns": "entry",
          "targets": {
            "firefox": "64",
            "opera": "57",
            "chrome": "71",
            "edge": "44",
            "ie": "11"
          }
        }
      ]
    ]
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.2.3",
    "@babel/core": "^7.2.2",
    "@babel/node": "^7.2.2",
    "@babel/polyfill": "^7.2.5",
    "@babel/preset-env": "^7.2.3",
    "@babel/register": "^7.0.0"
  },
  "dependencies": {
    "d3": "^5.7.0"
  }
}

注意在targets我指出我对网络浏览器的版本感兴趣。浏览器一无所知require功能。只有 Node.js 知道它。

这是我的源代码:

import * as d3 from 'd3';

function draw(data) {
    // ...
}

d3.json('../data/some-data.json', draw);

但我看到 Babel 7 代码生成结果包含require功能:

"use strict";var d3=_interopRequireWildcard(require("d3"));...

因此我在浏览器中收到运行时错误:

未捕获的引用错误:未定义要求

为什么会发生这种情况以及如何解决该问题?


是的,浏览器中没有内置 require() 。

Babel 默认将导入和导出声明转换为 CommonJS (require/module.exports)。

Babel 没有做任何事情,它基本上就像const babel = code => code; 通过解析代码,然后再次生成相同的代码。

如果你想在浏览器中运行现代 JavaScript,Babel 本身是不够的,你还需要一个支持 CommonJS 模块语句的构建系统或捆绑器:

  1. Babelify + 浏览器化

  2. 巴别塔 + WebPack

这两个工具将转换您的 require 调用以在浏览器中工作。

  1. 编译为 AMD 格式 (transform-es2015-modules-amd) 并在应用程序中包含 Require.js[我正在使用这个,因为我现有的应用程序依赖 grunt, require]

希望它有帮助,并创建了一个简单的 webpack 和 babel setup,如果需要的话请检查一下。webpack-babel 设置

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

为什么 Babel 7 对浏览器使用 require() 函数,而浏览器对此一无所知? 的相关文章

  • 动画 D3 地球仪 (d3.geo.azimuthal)

    我对 d3 javascript 库有疑问 我想使用方位角 http mbostock github com d3 talk 20111018 azimuthal html地球 我想从地球上的经度和纬度坐标插入点 并使地球动画化 而无需使用
  • 创建链接到 csv 文件的表

    我正在尝试创建一个链接到的表 csv使用 d3 文件 但我得到的只是一个空白网页 即使以克里米亚为例 我也得到一张空白页 我将很高兴得到指导或展示一个可行的例子或关于我做错了什么的建议 如果您询问如何从 CSV 数据创建 HTML 表 这就
  • 如何在 d3.js 中的节点上制作双击事件?

    我想在节点上进行双击事件 所以我尝试了 on dbclick function d return http google com and bind dbclick function d alert hello 但一切都失败了 谁能帮我 完整
  • D3.js 从 file:/// 加载本地数据文件

    我知道D3 js支持使用XHR和JSONP加载数据文件requests https github com mbostock d3 wiki Requests 但就我而言 我将通过从文件系统双击 html 文件来运行它们 这将像file fo
  • 使用 webpack output.target 选项创建 ES6 模块“等效”

    首先 抱歉 我很难总结标题中的问题 所以请随意修改 问题 假设我有两个公开默认函数的 ES6 文件 file 1 js export default function do the thing file 2 js export defaul
  • 请建议 D3.js 进行 CSV 数据导入

    我正在尝试使用 D3 js 导入 CSV 数据 var englishArray d3 csv data csv function d return d value function error data var englishArray
  • Typescript 中未定义的 d3.scale

    我是 Typescript 的新手 2 周 我正在从事包装 d3 js 框架的项目 我在使用 d3 d ts 命名空间 导出模块 导入时遇到问题 我的问题 当我尝试使用 d3 scale linear 时 浏览器控制台中出现错误 TypeE
  • 使用 Nodemon 在 Node.js v6.2.0 上安装 Babel V6.x ES7 Async/Await

    伙计 设置起来很痛苦 我已按照此处的安装说明进行操作 单击 nodemon 框 https babeljs io docs setup installation https babeljs io docs setup installatio
  • 可以在 d3.js 中使用具有固定圆圈大小的圆圈包布局吗?

    此圆形包布局示例 http bl ocks org 4063269 http bl ocks org 4063269 非常适合我正在从事的项目 但是它会调整所有圆圈相对于彼此的大小 有没有一种简单的方法来指定每个圆的固定半径 我已经搜索了源
  • 将流程添加到 create-react-app 项目的编译步骤

    我正在使用 create react app 开发一个项目 并希望将 Flow 添加到我的流程中 这官方文档 https github com facebookincubator create react app blob master p
  • nvd3散点图中自定义无数据标签

    我正在尝试使用自定义消息而不是显示的 无可用数据 消息 我正在使用 nvd3 散点图 气泡图 我遇到了一个建议here https stackoverflow com questions 17458236 nvd3 showing empt
  • 需要帮助从数组中为国家/地区着色,保留其余默认颜色

    我需要一些帮助从我创建的数组中获取数据 然后仅对数组中存在的国家 地区进行着色 而不在数组中的其余国家 地区我希望保留为默认颜色 我正在使用 D3 来完成所有这些工作 并且我非常确定我可以通过 D3 实现我需要的目标 但不确定如何实现 我想
  • D3 地图未渲染澳大利亚 topojson 文件

    我有一个 JSON 文件 d3 地图未渲染我创建的澳大利亚 TopoJSON 文件 相同的代码可以很好地渲染美国地图 浏览器检查器中没有错误 并且两个地图在 geojson io 等在线可视化网站上都呈现良好 我已经提供了 JSON 的链接
  • 展平使用 d3.js 嵌套创建的对象层次结构

    我正在尝试以如下方式可视化团队协作数据 图表中的不同颜色代表不同的协作工件类型 来自来源的数据如下所示 var json teamLabel Team 1 created date 2013 01 09 typeLabel Email co
  • d3:力向图:节点过滤

    我正在浏览以下帖子 突出显示选定的节点 https stackoverflow com questions 8739072 highlight selected node its links and its children in a d3
  • 从未定义解构时避免错误

    可以说我有这个代码 const x y point Babel 会将其变成 var point point x point x y point y 这很好 但是如果点未定义怎么办 现在我得到一个错误 Cannot read property
  • 使用 Gulp-babel 并得到“严格模式下的参数名称冲突”

    我正在尝试使用吞咽通天塔 https www npmjs com package gulp babel所以我可以开始在我的 ES5 应用程序中编写一些 ES6 ES2015 代码 var gulp require gulp gutil re
  • 在 React 应用程序中使用使用 React、Redux 和 React-Redux 完成的组件并使用 Webpack 构建时出错

    我已经使用react redux 和react redux 完成了一个带有商店的组件 代码的捆绑是通过 webpack 完成的 请检查下面附加的代码 当我想在另一个 React 项目中使用 webpack 构建组件时 我遇到了以下问题 Wa
  • 如何修改Open Shift中的节点启动命令?

    我使用 ES6 和 babel node 来创建我的应用程序 并且我要求我的应用程序以命令启动babel node app js 此命令列在我的 package json 中的 script start 中 因此命令 npm start 运
  • 具有负值的条形图

    我需要创建一个可以有负值的 d3 条形图 理想情况下 零轴位置应根据数据的范围来计算 但我会选择一个假设对称正负范围的解决方案 即它始终位于图表的中间 这是我想要实现的目标的示例 好吧 假设您有一个数字数组作为数据集 其中包括一些正值和负值

随机推荐

  • 有没有办法在安装核心服务(Spark 等)后设置引导操作在 EMR 上运行?

    有没有办法在安装核心服务 Spark 等 后设置引导操作在 EMR 上运行 我正在使用 emr 5 27 0 您可以提交一些脚本作为step 不是引导程序 例如 我制作了一个SSL证书更新脚本 并通过步骤将其应用到EMR中 这是我用 Pyt
  • BadPaddingException 解密 Android 中的加密数据

    我对 Android 安全概念不熟悉 我一直在阅读一些博客 以了解我们可以使用公钥加密数据 并可以使用相应的私钥解密数据 加密似乎没有任何问题 但是当我尝试解密它时 它会抛出 javax crypto BadPaddingException
  • 我的应用程序如何发送带有照片的彩信?

    我想从我的应用程序撰写一条消息 其中可以包含照片 例如 我在 iPhone 中输入了我的相册并打开了一张照片我可以单击选项 然后单击彩信选项卡 照片将添加到消息中然后我可以将其发送给我想要的任何联系人 我想要的是 当我单击应用程序上的按钮时
  • 使用 gtools::mixedsort 或 dplyr::arrange 的替代方案

    我正在尝试通过使用来订购数据框dplyr arrange 问题是我尝试排序的列包含一个固定字符串后跟一个数字 例如由下面的虚拟代码生成的 dummydf lt data frame values rnorm 100 sortcol past
  • 为什么 a[c] 覆盖 a[b]? [复制]

    这个问题在这里已经有答案了 我不明白为什么输出是456 我认为a b 中的b是一个对象的属性 而c是a的另一个属性 它们与 var b 和 c 完全无关 但为什么 a c 会覆盖 a b 呢 var a b key b c key c a
  • 错误:“:”不是有效的资源名称字符

    我已将 Eclipse 项目导入到 android studio 我用 google 搜索但没有得到正确的答案 发生这些错误 D app src main res values strings xml Error Error is not
  • 测量 Android 上的数据漫游流量?

    刚从冰岛度过一个愉快的假期回来 正在等待我的电话公司的数据漫游账单 我希望尽可能限制我的流量 但我想提前知道 我使用了非常好的应用程序网络计数器但它根本没有测量漫游数据流量 所以我想构建自己的应用程序 仅测量漫游数据流量 我有一些布尔值要开
  • 使用 == 比较 numpy 数组的规则是什么?

    例如 尝试理解这些结果 gt gt gt x array 0 1 2 3 4 5 6 7 8 9 gt gt gt x np array 1 2 astype np float32 array 0 1 0 0 0 0 0 0 0 0 0 0
  • npm run 分段错误:11

    我正在尝试 npm run HOT 1 node node modules bin react native webpack server start hot 收到此错误 gt email protected hot Users user
  • Chartkick 柱形图多种颜色

    我在用着图表踢在我的 RoR 项目中生成图表 效果非常好 与谷歌图表一起 我创建了一个柱形图 with 只有 2 个酒吧 男性和女性 现在客户希望每个条形都有不同的颜色 那可能吗 我看过这个帖子 如何更改使用 Chartkick 创建的柱形
  • 如何显示 bash 会话的当前进程树?

    我想创建一个 bash 别名 它为我提供从我正在使用的当前 bash 会话到 init 的进程树 用例是为了知道我是否使用过bash or vi s shell命令 我正在使用 MacOS X 我听说过pstree 但是好像只显示子进程 而
  • 在 Typescript 中向数组添加属性

    我正在尝试向 Typescript 中的 Array 对象添加一个方法 我已经在 SO 上找到了其他解决方案 但这些解决方案都不适合我 我的代码如下所示 interface Array average gt number Array pro
  • 需要根据元素升序将列表划分为列表(Haskell)

    假设我有这样的列表 4 5 6 7 1 2 3 4 5 6 1 2 我需要一个 Haskell 函数来将该列表转换为一个列表列表 该列表由原始列表的片段组成 这些片段按升序形成一系列 所以结果应该是这样的 4 5 6 7 1 2 3 4 5
  • 在不可变类中,为什么字段被标记为私有?

    创建不可变类时将字段设为私有有什么好处 我见过为什么在创建不可变类时 字段被声明为私有 但我没有从这篇文章中理解任何内容 有人可以向我解释一下吗 最好的解释方法是举个例子 public class Immutable private fin
  • 如何使用 WMI 和 Python 弹出 CD?

    使用 Windows 的 WMI 库 如何弹出安装在特定 CD DVD 驱动器中的 CD ROM 由于我在 Python 上使用 wmi py 库 因此我要求获取 WMI 文档或示例的源代码 如果解决方案能够满足比 Windows 2000
  • scala - 将超过22个元素的json解析为案例类

    这个问题或类似的问题之前曾发布过 但是没有一个解决方案适用于最新的库 经过广泛的搜索 到目前为止 我没有发现任何证据表明最流行的库的最新版本spray json or play json 或其插件 可以处理这种情况 有没有什么东西可以将超过
  • 为什么java内部函数仍然有代码?

    Java API 中有许多方法是内在函数 但在查看源代码时仍然具有与其关联的代码 例如 Integer bitCount 是一个内在函数 但如果您打开 Integer 类文件 您可以看到包含它的代码 如果编译器 jvm 不一定使用该代码 那
  • 先验算法

    我之前曾多次听说过 Apriori 算法 但从未有时间或机会深入研究它 有人可以用简单的方式向我解释该算法的工作原理吗 另外 一个基本的例子会让我更容易理解 先验算法 它是一种用于数据集中频繁模式挖掘的候选生成和测试方法 有两件事你必须记住
  • 如何在 tmap 中定位标题和图例?

    我是编程新手 目前正在参加使用 R 的空间分析入门课程 以下代码生成下面包含的 tmap 如何将每个 tmap 的标题居中并将图例放置在右上角 而不将其放在地图本身之上 非常感谢你的协助 ga1 tm shape a2georgia tm
  • 为什么 Babel 7 对浏览器使用 require() 函数,而浏览器对此一无所知?

    我尝试在我的模块中使用 d3 js 我使用 Babel 7 来转译我的代码源 这是我的package json name d3 learning version 1 0 0 description main index js directo