首页 > 解决方案 > 节点模块@kenjiuno/msgreader 错误的原因:MsgReader 不是构造函数

问题描述

我什至无法从相对流行的@kenjiuno/msgreader中获取示例代码的第一行,用于解析 Outlook .msg 文件以使其正常工作。我已经使用 npm 成功安装了模块,我的代码是:

const fs = require('fs')
const MsgReader = require('@kenjiuno/msgreader')

const msgFileBuffer = fs.readFileSync('./test-email.msg')
const testMsg = new MsgReader(msgFileBuffer)

但我得到错误:“MsgReader 不是构造函数”。

MsgReader 的快速控制台日志返回{ default: [Function: MsgReader] }。我也尝试将它作为一个函数(没有'new'关键字)来执行,它也产生了一个错误。

我的代码和示例代码之间的唯一区别是它们使用了 import ( import MsgReader from '@kenjiuno/msgreader'),而我使用了 require,但大概这没有什么区别?

有什么想法吗?

标签: javascriptnode.jsnpmmodulepackage

解决方案


我最终更改了 require 语句以添加["default"]解决问题的方法:

const MsgReader = require('@kenjiuno/msgreader')["default"]

我查看了库代码,并使用“默认”语法根据导出语句进行了猜测。这个问题与commonJS有关吗?如果有人可以向我解释这一点,那就太好了!


推荐阅读