在NodeJS中加载实验ES模块是否支持导入命名导出?

看到下面的import

 import { publishObjectAsync, consumeObjectsAsync, createChannelAsync } from "../shared/messaging/rabbitmq" 

这产生了这个错误:

SyntaxError:所请求的模块不提供名为“publishObjectAsync”的导出

这是怎么回事?

哎呀,对不起,这是我的错,但我相信这是值得的提供我自己的答案,以便其他人可能会遇到同样的问题,他们可以得到一个提示!

/shared中的代码文件扩展名不会重命名为.mjs !!!!!

因此,如果您发现此问题,则应检查目标模块中是否存在导出,或者导入的模块是否具有Michael Jackson文件扩展名(.mjs)。

这是问题。 它一路支持alisaes!

你用于别名的语法是正确的 – 所以我会假设实验ES模块加载不支持用别名导入特定的导出。

但是,您可以尝试使用别名加载所有导出:

 import * as rabbitmq from "rabbitmq"; export const createChannelAsync = () => rabbitmq.createChannelAsync(createConnectionAsync); 

或者你可以尝试如果导出语法支持别名。

 export { name1 as default, … }; 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import和https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements / export的语法的进一步信息。