使用 ES6 (Babel) 导出类

2023-12-23

我正在使用 ECMAScript 6 编写一些前端代码(使用 BabelJS 进行编译,然后使用 Browserify 进行浏览器化),以便我可以在一个文件中包含一个类,将其导出并将其导入到另一个文件中。

我这样做的方式是:

export class Game {
    constructor(settings) {

    ...

    }
}

然后在导入类的文件上我执行以下操作:

import {Game} from "../../lib/pentagine_browserified.js";
var myGame = new Game(settings);

然后我编译它grunt, 这是我的Gruntfile:

module.exports = function(grunt) {
  "use strict";

  grunt.loadNpmTasks('grunt-babel');
  grunt.loadNpmTasks('grunt-browserify');

  grunt.initConfig({
    "babel": {
      options: {

        sourceMap: false
      },
      dist: {
        files: {
          "lib/pentagine_babel.js": "lib/pentagine.js",
          "demos/helicopter_game/PlayState_babel.js": "demos/helicopter_game/PlayState.js"
        }
      }
    },

    "browserify": {
      dist: {
        files: {
          "lib/pentagine_browserified.js": "lib/pentagine_babel.js",
          "demos/helicopter_game/PlayState_browserified.js": "demos/helicopter_game/PlayState_babel.js"
        }
      }
    }
  });

  grunt.registerTask("default", ["babel", "browserify"]);
};

然而,关于new Game(调用,我收到以下错误:

Uncaught TypeError: undefined is not a function

因此,我所做的是分析 Babel 和 Browserify 生成的代码,我在PlayState_browserified.js:

var Game = require("../../lib/pentagine_browserified.js").Game;

我决定打印require output:

console.log(require("../../lib/pentagine_browserified.js"));

它只不过是一个空物体。我决定查看一下pentagine_browserified.js file:

var Game = exports.Game = (function () {

看起来它正确导出了该类,但由于某些其他原因,其他文件不需要它。

另外,我确信该文件是正确需要的,因为更改了字符串"../../lib/pentagine_browserified.js"吐出一个Not Found错误,所以我确信它会寻找正确的文件。


Browserify 旨在提供一个“入口点”文件,通过该文件它递归地遍历您的所有require语句,从其他模块导入代码。所以你应该是require正在_babel.js模块的版本,而不是_browserified.js ones.

从表面上看,您希望应用程序的“入口点”是demos/helicopter_game/PlayState_browserified.js, 是的?如果是这样的话:

  • 在 PlayState.js 中,将其更改为import {Game} from "../../lib/pentagine_babel.js";.
  • 在 Gruntfile.js 中,删除"lib/pentagine_browserified.js": "lib/pentagine_babel.js".

对我有用。让我知道这是否足够,否则我误解了您的要求。

附:您可以使用babelify https://github.com/babel/babelify以避免 Babel 和 Browserify 有单独的 Grunt 任务。看我的回答here https://stackoverflow.com/a/29426373举个例子。

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

使用 ES6 (Babel) 导出类 的相关文章

随机推荐

  • 如何在交叉编译环境中检测libc名称和版本?

    我的 Linux 桌面上有一些交叉编译器 有些使用 glibc 有些使用 uclibc 将来可能会有其他libcs too 目前 我可以进入他们的 sysroot 目录并搜索libc so并尝试查找它指向哪个文件名 例如libc so gt
  • SelectNodes 和 GetElementsByTagName

    SelectNodes 和 GetElementsByTagName 之间的主要区别是什么 选择节点 http msdn microsoft com en us library system xml xmlnode selectnodes
  • pdf.js 获取有关嵌入字体的信息

    我正在使用 pdf js 获取文本我得到带有字体信息的块 Object str blabla dir ltr width 191 433141 height 12 546 transform Array 6 fontName g d0 f2
  • 同时使用复选框和下拉菜单进行准确过滤

    我正在构建一个非常可排序 可过滤的图像库 其中包含很多标签 这个问题是基于这个如何让下拉菜单表现得像复选框 https stackoverflow com q 68315184在那里我得到了大部分问题的解答 编辑 这里进一步采取了这个问题的
  • 流上的 C++ 正则表达式

    我有一个非常大的文本文件 最多几百 MB 我想使用 STL 正则表达式对其进行处理 我正在寻找的匹配区域跨越几行 并且在文件中至少出现几千次 我可以使用流迭代器来实现此目的吗 我试过了std istream iterator
  • Linux 中没有 X.org 的 OpenGL

    我想在 Linux 中打开一个没有 X 的 OpenGL 上下文 有什么办法可以做到吗 我知道集成英特尔显卡硬件是可能的 尽管大多数人的系统中都有 Nvidia 卡 我想要一个适用于 Nvidia 卡的解决方案 如果除了通过集成英特尔硬件之
  • C - 不同文件中全局定义的变量显示不带 extern 修饰符的外部链接

    彻底迷茫了 我很沮丧 因为我认为准确了解范围和链接如何工作很重要 但我一直看到有关的相互矛盾的信息extern我的编译器 链接器与我读到的内容相矛盾 main c int int1 void main int1 6 printf nMain
  • Scipy.optimize.l_bfgs_b:为什么它会多次计算相同的函数值?

    我目前正在尝试使用 scipy optimize 来查找尝试拟合某些数据的模拟参数 A 创建了一个函数 给出我的模型在数据上的卡方 以便 scipy optimize 必须最小化该函数 我进行模拟的主要问题之一是 因此被调用的函数非常耗时
  • Python无法导入DataFrame

    我正在尝试在 Python 中使用 Pandas 来导入和操作一些 csv 文件 我的代码是这样的 import pandas as pd from pandas import dataframe data df pd read csv h
  • Angular2 没有渲染器提供者! (NgModel -> 令牌 NgValueAccessor -> DefaultValueAccessor -> 渲染器)

    我在customModal ts中自定义模态shlomiassaf angular2 modal https github com shlomiassaf angular2 modal 具体来说 我添加一个包含ngModel的输入 它导入了
  • 将 MaterialToggleButton 的选定颜色更改为纯色

    无法将 MaterialToggleButton 的选定颜色设置为纯色 仅显示原色的透明阴影 我尝试了下面的代码集 输出图像如下所示 样式中的按钮主题
  • 使用 geom_sf 制作包含一组子区域的地图

    我想制作一张仅包含子区域组外部边界的地图 下面绘制了所有子区域 我想制作一张地图 但仅包含所在区域的外部边界region栏目中的spain目的 我尝试过几个aes like fill and group甚至在绘制之前进行分组但找不到正确的方
  • Android 解析 JSON 数组

    如何解析 JSON ARRAY 来获取没有 和 的数据 这是 json formattedAddress 23 Damansara Puchong Hwy Bandar Puchong Jaya 47100 Puchong Batu Dua
  • 设置 JQuery event.preventDefault() 时绕过 window.open 上的弹出窗口阻止程序

    我想在超链接的单击事件上有条件地显示 JQuery 对话框 我有一个要求 比如在条件 1 上打开一个 JQuery 对话框 如果条件 1 不满足 则导航到其点击事件有问题的 href 标记引用的页面 我可以在链接的点击事件上调用函数 该函数
  • 为什么我的 Scala 列表在以下代码中消失了?

    val files new File data list val filtered files filter name gt name contains txn val masterList new ListBuffer String fo
  • ISIN 至少有 1 个号码

    我有以下正则表达式来解析债券 资产等的 ISIN 2 个字符后跟 10 个数字和字符 A Z 2 A Z0 9 10 但这也标记了例如这样的单词ABCDEFGHIJKL 但这不是真正的 ISIN ISIN 的定义如下 WIKI https
  • 仅在加载 Google Web Font 后才绘制到画布

    我在用 fillText 在画布上 我希望其文本采用 Google Web 字体 在我的例子中为 Oswald 当页面加载时 文本在字体加载之前被绘制到画布上 但显然一旦字体加载 画布上的文本就不会更新 因为它已经被绘制为位图 如何延迟此文
  • 基于向量重叠从列表中删除和添加元素

    我有一个包含约 500 个模型对象的列表 该对象的名称是 v1 existing list lt vector list 3 v1 lt names existing list lt c A B C 我现在得到了不同的数据集 我也需要对其进
  • 实体框架 Code First 的 Spatial / DBGeography 属性索引

    我有一个 EF 6 1 代码优先项目 其模型之一具有 DbGeography 属性 仅包含 POINT 地理 我将对其执行查询 我声明自定义索引如下官方指南 http msdn microsoft com en us data jj5916
  • 使用 ES6 (Babel) 导出类

    我正在使用 ECMAScript 6 编写一些前端代码 使用 BabelJS 进行编译 然后使用 Browserify 进行浏览器化 以便我可以在一个文件中包含一个类 将其导出并将其导入到另一个文件中 我这样做的方式是 export cla