如何在Express JS中使用导出的功能?
我想做的是使用Express JS中的app.use()调用导出的函数,但我不确定该怎么做。我尝试了以下代码:
var express = require('express');
var router = require('./routing');
var checks = require('./api/checks');
var app = express();
app.use(checks.tests());
app.use('/about', router);
app.listen(3000, function () {
console.log('Server started with port 3000.');
});
但是一旦尝试启动节点服务器,就会出现以下错误:
tests work correctly!
C:\xampp\htdocs\javsgreen_express\node_modules\express\lib\application.js:210
throw new TypeError('app.use() requires a middleware function')
^
TypeError: app.use() requires a middleware function
at Function.use (C:\xampp\htdocs\javsgreen_express\node_modules\express\lib\application.js:210:11)
at Object.<anonymous> (C:\xampp\htdocs\javsgreen_express\app.js:6:5)
at Module._compile (internal/modules/cjs/loader.js:945:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
at Module.load (internal/modules/cjs/loader.js:798:32)
at Function.Module._load (internal/modules/cjs/loader.js:711:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)
at internal/main/run_main_module.js:17:11
并且JS check.js正确位于./api/(./api/checks.js)中,并且该文件的代码为:
module.exports = {
tests: function() {
console.log("tests works correctly!");
}
}
所以,我说错了,或者我忘记了一些东西。 **哦,现在我有了通知(在提交此消息之前,我已经尝试过一次),消息“测试正确!!,它在控制台中正确显示,就在错误发生之前。
有什么想法吗?
回答如下:您正在尝试将导出的模块作为中间件传递。我建议阅读Middleware是什么。您不能将常规功能作为中间件传递。您可以看到console log
,因为调用了checks.tests()
并返回了console log
,但是当Express
尝试将其用作中间件时,您会看到。坏了您使用导出功能的语法是正确的,只是您在错误的位置使用它。
P.S-如果将来您要制作自己的自定义中间件。然后此语法可能会起作用
如何在Express JS中使用导出的功能?
我想做的是使用Express JS中的app.use()调用导出的函数,但我不确定该怎么做。我尝试了以下代码:
var express = require('express');
var router = require('./routing');
var checks = require('./api/checks');
var app = express();
app.use(checks.tests());
app.use('/about', router);
app.listen(3000, function () {
console.log('Server started with port 3000.');
});
但是一旦尝试启动节点服务器,就会出现以下错误:
tests work correctly!
C:\xampp\htdocs\javsgreen_express\node_modules\express\lib\application.js:210
throw new TypeError('app.use() requires a middleware function')
^
TypeError: app.use() requires a middleware function
at Function.use (C:\xampp\htdocs\javsgreen_express\node_modules\express\lib\application.js:210:11)
at Object.<anonymous> (C:\xampp\htdocs\javsgreen_express\app.js:6:5)
at Module._compile (internal/modules/cjs/loader.js:945:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
at Module.load (internal/modules/cjs/loader.js:798:32)
at Function.Module._load (internal/modules/cjs/loader.js:711:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:1014:10)
at internal/main/run_main_module.js:17:11
并且JS check.js正确位于./api/(./api/checks.js)中,并且该文件的代码为:
module.exports = {
tests: function() {
console.log("tests works correctly!");
}
}
所以,我说错了,或者我忘记了一些东西。 **哦,现在我有了通知(在提交此消息之前,我已经尝试过一次),消息“测试正确!!,它在控制台中正确显示,就在错误发生之前。
有什么想法吗?
回答如下:您正在尝试将导出的模块作为中间件传递。我建议阅读Middleware是什么。您不能将常规功能作为中间件传递。您可以看到console log
,因为调用了checks.tests()
并返回了console log
,但是当Express
尝试将其用作中间件时,您会看到。坏了您使用导出功能的语法是正确的,只是您在错误的位置使用它。
P.S-如果将来您要制作自己的自定义中间件。然后此语法可能会起作用