NodeJS-使用require Works导入不起作用

时间:2020-07-23 00:40:04

标签: node.js es6-modules

我试图了解为什么require不能用于npm软件包而import可以工作的原因。该软件包为r7insight_node,可让我们将日志发送到其产品Rapid7。当我们将require用作per their instructions时,一切正常,但是当我使用import时,效果不佳。

他们的图书馆有一个src/index.js文件,看起来像:

//  Use codependency for dynamically loading winston
const requirePeer = codependency.register(module);

//  Import winston
const winston = requirePeer('winston', {optional: true});
const Transport = requirePeer('winston-transport', {optional: true});

//  If we have successfully loaded winston (user has it)
//  we initialize our InsightTransport
if (winston) {
  provisionWinston(winston, Transport);
}

//  Logger is default export
module.exports = Logger;
//  Export as `bunyanStream` to not break existing integration
module.exports.bunyanStream = buildBunyanStream;
module.exports.provisionWinston = provisionWinston;

我的理解是require是同步的并且是“计算的”,而import是异步的并且不是“ written here”的“计算”。是require工作而import不工作的原因吗?

“计算”是否意味着执行index.js文件,并因此在if (winston)中而不是在require中检查并执行import块?有没有一种方法可以使用import语句来实现相同目的?

预先感谢

1 个答案:

答案 0 :(得分:1)

要使该软件包与ES6导入方式兼容,必须将其写入其中,并且必须以export default Logger而不是module.exports = Logger的形式导出,希望我的回答对您有所帮助