Expressjs - TypeError: Невозможно прочитать свойство 'apply' из неопределенного - PullRequest
1 голос
/ 02 июня 2019

Я знаю, что есть другие вопросы об этой ошибке, но ни один из них не помог мне. Все работало нормально, пока я не решил добавить груз и изменить структуру каталогов.

Я пытался изменить заказы, мой маршрут загружается, но не работает

Это server.js:

'use strict';

const express = require('express');
const consign = require('consign'); 
const path = require('path');
const cookieParser = require('cookie-parser');
const porta = 3000;

const app = express();
const pathFront = '../app/front/';

//app.use(require('../app/routes/'));


app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, pathFront + 'public')));

app.set('views', path.join(__dirname, pathFront + 'views'));
app.set('view engine', 'pug');

app.use(require('../app/routes/')); // still not working

// Tried to change the include order, did not work
consign()
    .include('./app/routes')
    .then('./config/db.js')
    .then('./app/back/api/models')
    .then('./app/back/api/controllers')
    .into(app);

module.exports = app;

Это индекс маршрута:

'use strict';

var express = require('express');
var router = express.Router();


router.get('/', function(req, res, next) {
  res.render('index', { title: 'API' });
});

/* ENDPOINTS*/
/* 
  /languages -- all
  /language?idLanguage
  /language?name=
  /languages?idCategory
  /language?name=
  /categories
  //
*/

module.exports = router;

Это структура папок:

enter image description here

И запуск npm:

e

1 Ответ

0 голосов
/ 03 июня 2019

Судя по вашему примеру кода, вы, похоже, неправильно используете consign.Включенные файлы (с использованием .include или .then после) должны экспортировать одну функцию, которая принимает приложение Express в качестве параметра.Проверьте этот пример в репо.Функции из каждого включенного файла вызываются с объектом, который вы предоставляете .into().Вы можете очень хорошо отпустить груз, и вручную запрашивать и использовать каждый файл, который, кажется, работает согласно вашим комментариям.

В противном случае вы можете изменить файлы маршрутов на что-то вроде этого:

server.js не изменится.

app / routs / index.js изменится на следующее:

'use strict';

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  res.render('index', { title: 'API' });
});

/* ENDPOINTS*/
/* 
  /languages -- all
  /language?idLanguage
  /language?name=
  /languages?idCategory
  /language?name=
  /categories
  //
*/

module.exports = function (app) {
  app.use('/', router);
}

После аналогичных изменений во всех других файлах, которые вы будете использовать с consign.

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