javascript - 导出和导入模块 - Nodejs
问题描述
我有一个 npm 包,它类似于 3rd 方库(npm 包)上的适配器。适配器包在 chrome 上运行良好。但是我正在尝试在 nodejs 上扩展适配器,因为该库具有用于浏览器和 nodejs 应用程序的不同对象库。因此在我的适配器中,我写了 moduleselector.js 如下
import * as nodeobject from '3rdpartylibrary/nodelib/libraryjs'
import * as browserobject from ''3rdpartylibrary/browserlib/libraryjs'
let libraryobject ;
if (typeof window === 'undefined')
libraryobject = nodeobject
else
libraryobject = browserobject
export default libraryobject
我有一个旧的 commonjs 模块,用于直接使用 browserlib/librarjs 对象。需要更新以使用上面创建的选择器。所以我将遗留模块中的代码替换为
const libobject = require('./src/moduleselector.js')
然而,遗留代码调用库对象上导出的构造函数为
常量设置 = 新的 liboject.FactorySettings()
该函数也在 nodelib/libraryjs 模块中导出。但是在测试时,我从遗留模块中得到以下错误。
TypeError: liboject.FactorySettings() 不是构造函数。
但是,如果我更新选择器并在 moduleselector.js 中的导出之前添加这一行,我在选择器中调用它时不会收到任何错误。
const settings = new liboject.FactorySettings() //this works fine., however the legacy module breaks
export default libraryobject
我不知道这里缺少什么。
解决方案
推荐阅读
- visio - 向现有组添加形状会在 MS visio 中引发异常
- colors - lstlisting 代码是蓝色而不是黑色 - 关键字样式接管?
- php - 使用 PHP 从 JSON 数组中获取值
- html - 如何将 HTML 添加到文本中并将其添加到 DOM 以显示它?
- java - 无法将模型对象添加到“/”中的 jsp 视图,但相同的方法正在调用 /index
- android - 如何在firebase数据库中搜索一对
- sql - 如果一个值为 NULL,则两个值都为 NULL
- django - 如何在 Django 模板中使用“While Loop”?
- ruby-on-rails - 为什么会出现 Uncaught ReferenceError: $ is not defined coffeescript in rails 5.2?
- javascript - 难以将图像转换为 Base64