在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的语法的进一步信息。