#javascript #node.js #express #types
Вопрос:
Я испытываю странную ошибку. Я просто создавал новую папку, чтобы разделить свои маршруты.
Внутри я создал маршруты с помощью express.Router
API и экспортировал сам маршрутизатор.
Вот как выглядит код внутри post-routes.ts
:
import express from 'express';
const router = express.Router();
router.get( '/', ( req, res ) =>
{
res.send( 'This is working' );
} );
export default router;
ОК. Все, что мне нужно сделать сейчас, это импортировать его в свой index.ts
и создать корневой маршрут для моего post-routes.ts
файла.
Пожалуйста, скажите мне, если вы видите что-то неправильное в моем подходе.
index.ts
файл:
import express from 'express';
import cors from 'cors';
import postRouter from './routes/post-routes';
const PORT = process.env.PORT || 5000;
app.use( '/posts', postRouter );
app.use( express.json( { limit: '30mb' } ) );
app.use( express.urlencoded( { limit: '30mb', extended: true } ) );
app.use( cors() );
app.listen( PORT, () => console.log( `listening at ${ PORT }` ) );
Хорошо. Теперь, чтобы предоставить как можно больше информации, я вставлю следующее:
- Структура файлов внутри моего проекта:
package.json
конфигурация файла:
Как вы можете видеть, я использую "type": "module"
, чтобы иметь возможность использовать импорт внутри моего приложения узла. Что касается машинописного текста, я не получаю ошибок компиляции, поэтому index.ts
вижу post-routes.ts
файл, поэтому я ожидал index.js
бы post-routes.js
, что он также увидит файл. Но сервер выдает ошибку ниже. Как такое может быть?
Error [ERR_MODULE_NOT_FOUND]: Cannot find module 'E:Githubhospytal-fasionserverdistroutespost-routes' imported from E:Githubhospytal-fasionserverdistindex.js
Ответ №1:
Помимо того , что убедитесь, что target
и module
esnext
в вашем tsconfig.json
, убедитесь, что в вашем импорте указаны расширения файлов. т. е. попробуйте изменить следующую строку:
import postRouter from './routes/post-routes';
Для
import postRouter from './routes/post-routes.ts';
Комментарии:
1. Это верно. За одним исключением. Это должно быть
.js
расширение. Я уже используюesnext
в target и модуле в моемtsconfig.json
. Этоtsc
не преобразование.ts
расширений в.js
единицы.