【发布时间】:2020-02-20 08:04:35
【问题描述】:
我的服务器上的 GET 方法不断收到 TypeError。
确切的错误是:
TypeError: testCont.createDevice is not a function
这通常不是我编写代码的方式。我尝试这样做的原因是我可以从不同的控制器调用路由。
这就是我的代码的基础。
index.js
它包含所有常见的东西。
这是我导入控制器的地方:
var testCont = require('./api/controllers/testController');
这是我的路线声明:
const testRoutes = require('./api/routes/testRoutes');
testRoutes(app, testCont);
testController.js 看起来像这样...
'use strict';
module.exports = function() {
var mod = {
createDevice() {
return{ success: true }
}
}
return mod;
};
这里是 testRoutes.js 类...
module.exports = function(app, testCont) {
app.get('/api/v1.2/devices', (req, res) => {
testCont.createDevice()
})
};
就像我提到的,这个想法是最终在需要来自响应的信息时从另一个控制器调用路由。
有谁知道为什么它告诉我 createDevice 不是一个函数?我尝试了很多不同的东西。
提前致谢。
更新:
根据要求,我正在展示已实施的建议更改。
index.js 看起来像这样...
var testCont = require('./api/controllers/testController');
var testRoutes = require('./api/routes/testRoutes');
testRoutes(app, testCont);
当这部分代码被注释掉时,其他控制器和路由中的所有其他调用都可以正常工作。
整个 testController.js 文件如下所示:
'use strict';
module.exports = function() {
createDevice() {
return{ success: true }
}
};
整个 testRoutes.js 如下所示:
module.exports = function(app, testCont) {
app.get('/api/v1.2/devices', (req, res) => {
testCont.createDevice()
})
};
将代码添加到 index.js 文件时,我收到 502 Bad Gateway 错误。
更新 2:
我对我的疏忽实施了更正...
'use strict';
module.exports = {
createDevice() {
return{ success: true }
}
};
这就是得到 504 网关超时的现在的样子。
【问题讨论】:
-
似乎在 testController.js 中,您正在导出一个函数,而在 testRoutes.js 中,您正试图访问该函数上的 createDevice() 。快速修复:- testCont().createDevice();
标签: node.js mongodb express server typeerror