Node.js невозможно импортировать модуль ES6 - PullRequest
0 голосов
/ 26 января 2020

Я пытаюсь разделить мои маршруты к отдельному модулю в 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;

app. 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);

Что я здесь не так делаю?

Ответы [ 3 ]

3 голосов
/ 26 января 2020

Вам необходимо использовать полное имя файла:

import router from './routes.js';

Из документации :

имя модуля

Модуль для импорта из. Часто это относительный или абсолютный путь к файлу. js, содержащему модуль. Определенные упаковщики могут разрешать или требовать использования расширения; проверьте вашу среду. Разрешены только одинарные и двойные кавычки.

2 голосов
/ 26 января 2020

Вы уничтожаете импорт, но экспортируете как default. При импорте по умолчанию нет необходимости в деструктурировании

import router from './routes';

. Вы можете использовать деструктуризацию при использовании любого именованного экспорта

export const router = express.Router()

или вы вытаскиваете имущество из default export

export default {
  router: express.Router()
}
1 голос
/ 26 января 2020

Вы можете проверить эту ссылку, она может помочь вам https://github.com/nodejs/node/issues/27408

Вы можете попробовать использовать --es-module-specifier-resolution=node как говорится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...