Javascript 如何知道是否可以使用ES6导入语法导入npm包?

Javascript 如何知道是否可以使用ES6导入语法导入npm包?,javascript,node.js,npm,es6-modules,Javascript,Node.js,Npm,Es6 Modules,除了查看包的文档和尝试/错误之外,我如何确定是否可以使用ES6导入语法导入npm包 包文件夹中是否有我可以检查的文件 我经常问自己这件事 例如: md5包只提到md5=require('md5')但我刚刚测试过,它可以从“md5”导入md5 我怎样才能检查包装并确定呢?因为您使用的是Babel和webpack,所以您可以始终使用import。Webpack负责传输代码中的导入语句,以包含来自npm包的代码。我想不出任何情况下,import不起作用,而require会起作用。您必须检查模块/包是否

除了查看包的文档和尝试/错误之外,我如何确定是否可以使用ES6导入语法导入npm包

包文件夹中是否有我可以检查的文件

我经常问自己这件事

例如:

md5
包只提到
md5=require('md5')但我刚刚测试过,它可以从“md5”导入md5


我怎样才能检查包装并确定呢?

因为您使用的是Babel和webpack,所以您可以始终使用
import
。Webpack负责传输代码中的导入语句,以包含来自npm包的代码。我想不出任何情况下,
import
不起作用,而
require
会起作用。

您必须检查模块/包是否有
dist
src
文件夹。如果包具有
dist
文件夹,则可以使用es6的
import
语句导入它。否则,如果它有一个
src
文件夹,则不能使用es6的导入语句导入它,您必须使用cjs的
require
功能导入此类模块。如果尝试使用
import
语句导入cjs模块,将出现以下错误:

Syntax Error: Cannot use import statement outside a module

您如何运行node?您是在使用esm还是在使用实验模块?您应该始终能够从CommonJS模块导入ES模块:对不起,我不确定我是否理解您的问题。我正在运行节点版本v8.11.3-我是在将包导入我的React应用程序的上下文中问这个问题的。我也在使用webpack和babel,我知道这些导入正在传输到ES5。但我也知道一些包不能处理导入语法,而另一些包可以。我不知道为什么。我弄错了吗?我相信你说得很准确。在某些情况下,软件包的文档明确规定了如何将软件包与Es6
import
语句一起使用。您可以阅读
import
语句是如何工作的,这可能会给您一个关于您要查找的内容的线索->如果它有一个
dist
文件夹,那么无论哪种方式都应该是好的。如果它有一个
src
文件夹,则取决于它是使用CommonJS还是ES编写的。公平地说,这通常意味着使用CommonJS风格编写,不能简单地导入。