我知道还有其他关于此错误的问题,但没有一个对我有帮助。一切都工作正常,直到我决定添加委托(delegate)并更改我的目录结构。
我尝试更改正在加载的路线的顺序,但没有成功
这是 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;
这是文件夹结构:
并运行 npm start:
最佳答案
根据您的示例代码,您似乎没有正确使用 consign
。包含的文件(后面使用 .include
或 .then
)应导出一个以 Express 应用程序作为参数的函数。检查this example在委托(delegate) repo 中。使用您提供给 .into()
的对象来调用每个包含文件中的函数。您可以很好地放弃委托(delegate),并手动要求和使用每个文件,这似乎按照您的评论工作。
否则,您可以将路线文件更改为如下所示:
server.js 没有改变。
app/routes/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
中使用的所有其他文件中进行类似的更改。
关于node.js - Expressjs - 类型错误 : Cannot read property 'apply' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56417904/