我正在制作一个nodeJS模块,我想使用expressJS作为它的框架。
我想看看如何进行,包括内部函数和app.get();。并通过其他文件(例如实际应用)调用它。

var express = require("express");
var app = express();

app.get("/", function (req, res) {
    exports.type = function (text) {
        console.log(req.ip);
        console.log(text);
    }
});


现在,当我使用它时,我会在实际的应用程序上调用它,例如:

var web = require("directory_to_file");
var express = require("express");
var app = express();
var http = require("http").Server(app);
app.get("/", function (req, res) {
    web.type("Hello, world");
});
http.listen(10022, function () {
    console.log("server is up");
});


我收到一个错误:

TypeError: Property 'type' of object #<Object> is not a function


任何人都知道一种方法来使我可以调用该函数吗?

最佳答案

在您的directory_to_file中,您仅在不会被调用的app.get('/')上导出。

您可以在directory_to_file中添加以下代码

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

router.get('/', function(req, server) {
    console.log(req.ip);
});

module.exports = router;


在主文件中,您可以使用app.use('/', web)

简短说明:
您正在directory_to_file文件中创建一个新的Express应用程序/配置,它将不会启动或使用。因此,您的app.get事件不会被触发一次。

这就是为什么web.type不是函数的原因。您没有导出任何内容。
使用我提供的方式。这是一种常用的方法。

您可以将我提供的代码称为“路线”。创建多个路由/路由文件,并将它们包括在您的main方法中。

关于node.js - 如何使用expressJS创建一个nodeJS模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33057663/

10-12 00:00
查看更多