Node.js NodeJS-使用require works导入不起作用

Node.js NodeJS-使用require works导入不起作用,node.js,es6-modules,Node.js,Es6 Modules,我试图理解为什么对于npm包,require有效,而import无效。该软件包是r7insight\u node,允许我们将日志发送到他们的产品Rapid7。当我们使用时需要,但当我使用导入时不需要 他们的库有一个src/index.js文件,看起来像: // Use codependency for dynamically loading winston const requirePeer = codependency.register(module); // Import winsto

我试图理解为什么对于npm包,
require
有效,而
import
无效。该软件包是
r7insight\u node
,允许我们将日志发送到他们的产品Rapid7。当我们使用
时需要
,但当我使用
导入时不需要

他们的库有一个
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
是异步的,不是“计算的”。这就是为什么
require
有效而
import
无效的原因吗

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


提前感谢

让包与ES6导入方式一起工作,它必须写入其中,它必须导出为例如:
导出默认记录器
,而不是
module.exports=Logger
,希望我的回答能帮助您

让模块与
导入
一起工作,它必须设计为与导入兼容,并且调用者必须以正确的方式导入它。为
require()
设计的模块不能自动与
import
兼容。