"The requested module ' does not provide an export named 'default' "错误,但仅在相对导入中



我有这个来自外部的api模块。当它被安装为node_module(使用npm安装(时,执行如下导入操作:

import MyAPI from 'api'

然而,当我查看node_modules中的api文件夹,取出作为模块入口点的api.js,并进行这样的相对导入时:

import MyAPI from './api.js'

然后我得到错误:

"The requested module ./api.js does not provide an export named 'default'"

我无法控制api模块是如何构建的。它怎么能在一种情况下起作用,而在另一种情况中却不起作用?这是节点12。

您已经确认模块文件夹中的package.json中没有"type": "module"。这就是问题所在。它使用的是较旧的CommonJS系统,而不是模块使用的较新的标准ESM系统。Node.js在通过ESM加载旧式CommonJS模块时会进行一些自动转换(详细信息(。

如果要将该文件从其模块中复制出来并在不同的模块环境中使用,则必须将其导出(以及可能的导入(转换为ESM。例如,代替:

exports.example = function example() { };

它将是

export function example() { }

但这可能很复杂,因为这两个系统的工作方式不同。CommonJS是动态的,基于属性分配(尽管结果是静态的(,ESM是静态的,声明性的(尽管结果在某些方面是动态的(。

相关内容

最新更新