有没有一种方法可以使用“ import”(而不是“ require”)从此节点模块中进行导入?

时间:2019-05-22 14:18:23

标签: 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导入此功能,还是只能使用require导入此功能?

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,实际上是可以的。

如果您使用的是nodejs LTS,则必须为使用.mjs的文件使用import扩展名,并在运行{时传递experimental-modules标志{1}}过程。

node

// foo.mjs import equal from 'deep-equal'; node --experimental-modules foo.mjs 开始,您只需传递nodejs 12.3.0。来自docs

  

启用后,Node.js在将以下内容作为ES模块传递给节点作为初始输入或被ES模块代码中的import语句引用时会将其视为ES模块

您还可以在experimental-modules中将type指定为module

package.json

来自文档

  

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