Ошибка типа: невозможно прочитать свойство 'use' из неопределенного Express - PullRequest
1 голос
/ 17 апреля 2020

У меня возникают некоторые проблемы с моим express сервером, когда я использую команду 'app.use'

в моих задачах-маршрутах. js файл, у меня есть следующий код

import express from 'express';
const router = express.Router();


router.post('/task',(req, res) => {
    res.send('post.task - create a task');
});
router.get('/task',(req, res) => {
    res.send('get.task - get all tasks')
});
router.get('/task/:id',(req, res) => {
    res.send('get.task/:id - get task by id')
});
router.put('/task',(req, res) => {
    res.send('put.task - update a task')
});
router.delete('/task',(req, res) => {
    res.send('delete.task - delete a task')
});

export default router;

И в моем файле маршрутов. js, у меня есть

import taskRoutes from './api/task/tasks-routes';

export function registerRoutes(app) {
app.use('/api',taskRoutes);

}

Индекс. js

import express from 'express';
const app = express()
import {registerRoutes} from './routes';
const port = 3000
registerRoutes();
app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log(`MEVN app listening at http://localhost:${port}`))

Это ошибка, которую я продолжаю получать

/Users/musabhamid/Desktop/mevn-stack copy/prod-server/routes.js:15
  app.use('/api', _tasksRoutes2.default);
      ^

TypeError: Cannot read property 'use' of undefined
    at registerRoutes (/Users/musabhamid/Desktop/mevn-stack copy/prod-server/routes.js:15:7)
    at Object.<anonymous> (/Users/musabhamid/Desktop/mevn-stack copy/prod-server/index.js:14:28)

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вам не хватает передать приложение в качестве аргумента в Index. js

import express from 'express';
const app = express()
import {registerRoutes} from './routes';
const port = 3000
registerRoutes(app); // <- Here
app.get('/', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log(`MEVN app listening at http://localhost:${port}`))
0 голосов
/ 17 апреля 2020
app.use('/api',taskRoutes);

Итак, вы звоните app.use

Что такое app?

export function registerRoutes(app) {

Это первый аргумент вы переходите к registerRoutes.

Так что это?

registerRoutes();

Там нет ни одного. Вы не передали ему аргумент.


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

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