为什么我得到' undefined不是一个函数'?

时间:2015-03-17 18:07:54

标签: 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')
    }
}

这是服务器:

//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);

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

 var fileman = new FileManager();
                  ^
TypeError: undefined is not a function

1 个答案:

答案 0 :(得分:5)

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

module.exports = {
    FileManager : FileManager
}

server.js

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

// this has the FileManager object that was created in the FileManager.js