Node.js 是否有方法使用';从此节点模块导入;导入&x27;而不是';需要';?

Node.js 是否有方法使用';从此节点模块导入;导入&x27;而不是';需要';?,node.js,npm,import,export,require,Node.js,Npm,Import,Export,Require,我正在使用这个节点模块'deep-equal'(),到目前为止,我能够访问其中函数的唯一方法是使用var-equal=require('deep-equal'),如文档中所建议。我通常使用import而不是require,我想知道是否可以在这个模块中使用import。主要功能从此行中的文件导出: var deepEqual = module.exports = function (actual, expected, opts) {...} 是否可以使用import导入此功能,或者仅使用requ

我正在使用这个节点模块'deep-equal'(),到目前为止,我能够访问其中函数的唯一方法是使用
var-equal=require('deep-equal'),如文档中所建议。我通常使用
import
而不是
require
,我想知道是否可以在这个模块中使用
import
。主要功能从此行中的文件导出:

var deepEqual = module.exports = function (actual, expected, opts) {...}
是否可以使用
import
导入此功能,或者仅使用
require
导入此功能

谢谢

是的,你确实可以

如果您使用的是
nodejs LTS
,那么在运行
节点
进程时,您必须对使用
导入
并传递
实验模块
标志的文件使用
.mjs
扩展名

// foo.mjs
import equal from 'deep-equal';

node --experimental-modules foo.mjs
nodejs 12.3.0开始
您只需通过
实验模块
。从

一旦启用,Node.js将以下内容作为初始输入传递给Node时,或当ES模块代码中的导入语句引用时,将视为ES模块

您还可以在
包中指定
类型
模块
。json

// package.json
{
  "type": "module"
}

来自文档

当最近的父package.json文件包含值为“module”的顶级字段“type”时,以.js或.mjs结尾的文件或缺少任何扩展名的文件将作为ES模块加载


您好@1556089774,谢谢您提供的信息。为什么你不能在没有其他东西的情况下,用“从‘深度相等’导入相等”的常规方法导入它呢?该功能具有
实验性
标志。简言之,不支持stableSorry我的意思是,模块的编写方式是什么,使用“var deepEqual=module.exports=function(actual,expected,opts){…}”,这使得您不能使用“import equal from'deep equal'”导入,如果模块像“export default deep equal{…}”那样编写,您可以使用这种方式导入在我的机器上进行了测试,带有实验标志的导入工作正常。var deepEqual=module.exports=这只是将module.exports对象指定给deepEqual,现在它们引用了同一个对象,即“这只是将module.exports对象指定给deepEqual”等等:为什么这样就可以使用“var deep=require('deep-equal')”而不是“import{deep}”从“deep equal”导入?