首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rollupjs + bson库

Rollupjs + bson库
EN

Stack Overflow用户
提问于 2018-03-07 16:59:27
回答 1查看 254关注 0票数 0

我正在处理的项目是用Node CommonJS模块编写的。我的观点是让这个项目可以从浏览器访问。我决定使用Rollup.js,这样在创建包时,您可以在浏览器中包含脚本并使用库中的函数(这要归功于iife格式)。我需要安装Rollup的插件来将CommonJS模块转换为ES6模块,这样浏览器就可以理解它。

一切都很好,除了这个项目使用来自npm的bson库。这个bson库是我的一个模块所需要的,它使用了它的一些函数。在我创建了一个包并将其包含到index.html中之后,console中出现了一个错误消息:"require is not defined“。当我查看创建的包的内部时,有一些要求。

代码语言:javascript
复制
var Map = require('./map'),
  Long = require('./long'),
  Double = require('./double'),
  Timestamp = require('./timestamp'),
  ObjectID = require('./objectid'),
  BSONRegExp = require('./regexp'),
  Symbol$1 = require('./symbol'),
  Int32 = require('./int_32'),
  Code = require('./code'),
  Decimal128 = require('./decimal128'),
  MinKey = require('./min_key'),
  MaxKey = require('./max_key'),
  DBRef = require('./db_ref'),
  Binary = require('./binary');

我已经在Plunker中创建了简单的代码来向你展示我的配置和简化的结构。https://plnkr.co/edit/YuiVJxhwhjUQ0Flw0Mg3?p=preview

在这个柱塞中有两个简单的模块,一个需要bson库,另一个需要第一个模块。还有Rollup配置文件,我在其中使用插件(如果没有全局插件,则会出现错误:Uncaught ReferenceError: Buffer is not defined)。

我真的很困惑。我是不是误解了什么?为什么不能像我的其他代码一样转换成ES6模块呢?

以下是bson库链接:https://www.npmjs.com/package/bson

EN

回答 1

Stack Overflow用户

发布于 2018-05-20 00:24:41

让我们看看:

为了让rollup捆绑你的应用程序,你需要首先将commonjs模块转换成es模块,这是通过你已经在使用的rollup-plugin-commonjs (https://github.com/rollup/rollup-plugin-commonjs)完成的,也许你可以在选项中显式地设置包含bson包。我通常这样使用它,以防万一:

commonjs({ include: ['node_modules/**'] })

如果一些库使用节点全局模块,你需要在浏览器中包含它们,这就是为什么你需要rollup-plugin- node -globals的原因。

最后,如果你看一下bson github存储库,有一个名为browser_build的文件夹,它包含了库的UMD定义,所以如果你需要'bson/browser_build‘而不是'bson’,它应该可以工作,而且你可能不需要使用全局插件。

看看js模块格式(cjs、umd、iife、es、amd),这是值得的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49147762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档