为什么我会'未定义不是函数'?

dnn*_*agy 0 javascript node.js express server

我正在尝试使用express.js返回一个文件作为对GET请求的响应我写了一个简单的FileManager类来处理文件请求,但是'undefined is not a function'当我调用时,我收到了错误new FileManager()

这是我如何尝试这样做:

//FileManager.js
FileManager = function () {}; //Empty initializer

FileManager.prototype.handleFileRequest = function(req,res){
    var fileId = req.params.id

    if(fileId){
        var path = './uploads/events' + fileId;
        res.sendfile(path)
    } else {
        res.send(404, 'file not found')
    }
}
Run Code Online (Sandbox Code Playgroud)

这是服务器:

//server.js 
var express  = require('express');
var FileManager = require('./FileManager.js').FileManager;

var app = express();

var fileman = new FileManager();

app.get('/:id', function (req, res){
            console.log('get id:' + req.params.id);
            fileman.handleFileRequest(req,res);
})

app.listen('blabla',3000);
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时node server.js,我收到以下错误:

 var fileman = new FileManager();
                  ^
TypeError: undefined is not a function
Run Code Online (Sandbox Code Playgroud)

Rya*_*yan 5

在FileManager.js中......您需要导出对象.

module.exports = {
    FileManager : FileManager
}
Run Code Online (Sandbox Code Playgroud)

server.js

var FileManager = require('./FileManager.js').FileManager;

// this has the FileManager object that was created in the FileManager.js
Run Code Online (Sandbox Code Playgroud)