此问题是由拼写错误或无法再复制的问题引起的。虽然类似的问题可能在这里是主题,但这个问题以一种不太可能帮助未来读者的方式得到解决。
我试图在服务器端使用ES6。我将endpoint从服务器文件中分离出来:
档案.js:
import { Router } from "express";
const router = Router();
router.get("/", async (req, res) => { "some code"});
export default router;
当我想像这样将其导入到我的服务器文件时:
import archive from "./endpoints/archive.js";
app.use("/archive", archive);
它给我一个错误:
(node: 9565)实验警告:ESM模块加载器是实验性的。内部/模块/run_main.js:54内部绑定('错误').triggerUncaughtException()
知道伙计们吗?我不想回到require/module.exports。
您可以使用节点 v14.12.0;在解决了此问题的位置,请阅读此文档 https://nodejs.org/api/esm.html#esm_package_json_type_field
经过几次尝试后,我意识到“nodemon”上的“--experimental-modules”标志会导致在整个应用程序中实现导入的问题,所以我确实更新了该标志以将新标志用于显式文件名“--es-module-specifier-resolution=node”,现在工作完美,这是一篇关于这个新标志的文章: https://nodejs.medium.com/announcing-a-new-experimental-modules-1be8d2d6c2ff
因此,对于explane,您可以执行如下脚本:
nodemon --es-module-specifier-resolution=node
还要记住你使用的nodejs版本是12以下的版本。XX,14。XX还是上一个稳定版本。
在Mac OS上升级Node.js至最新版本
我希望这能帮助更多的开发者:)