首页 > 解决方案 > 导出和导入模块 - 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

我不知道这里缺少什么。

标签: javascriptnode.js

解决方案


推荐阅读