Node.js 无法导入 ES6 模块

Rex*_*xha 1 javascript node.js ecmascript-6

我试图将我的路由分离到一个单独的模块routes.js,然后导入app.js. 我在控制台中收到很多错误。

internal/modules/esm/default_resolve.js:96 let url = moduleWrapResolve(specifier, parentURL); ^ Error: Cannot find module /Users/rhoxh/Desktop/24/routes imported from /Users/rhoxh/Desktop/24/app.js at Loader.resolve [as _resolve] (internal/modules/esm/default_resolve.js:96:13) at Loader.resolve (internal/modules/esm/loader.js:73:33) at Loader.getModuleJob (internal/modules/esm/loader.js:147:40) at ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:41:40) at link (internal/modules/esm/module_job.js:40:36) { code: 'ERR_MODULE_NOT_FOUND' }

路由.js

import express from 'express';

const router = express.Router();

router.get('/', (req, res) => {
  res.send('home page');
});

export default router;
Run Code Online (Sandbox Code Playgroud)

应用程序.js

import express from 'express';
import { router } from './routes';

const app = express();
const PORT = 8080;

app.listen(PORT, () => {
  console.log(`Server running at: http://localhost:${PORT}/`);
});

// Routes
app.use('/', router);
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

som*_*ome 11

您需要使用完整的文件名:

import router from './routes.js';
Run Code Online (Sandbox Code Playgroud)

文档

模块名称

要从中导入的模块。这通常是包含模块的 .js 文件的相对或绝对路径名。某些捆绑商可能允许或要求使用扩展;检查您的环境。只允许使用单引号和双引号字符串。

  • 无论出于何种原因,这都会带来极其令人沮丧的开发体验。节点应该优先修复这个 IMO。 (3认同)