如何正确执行自定义节点模块作为函数

时间:2015-05-20 01:35:01

标签: node.js

Node入门。 将自定义模块放在一起,将Excel文件解析为MongoDB:

exports.excelFileParser = function(fileName){
    if(typeof require !== 'undefined') XLSX = require('xlsx');


    var mongodb = require('mongodb');

    var MongoClient = mongodb.MongoClient;

    var url = 'mongodb://127.0.0.1:27017/my_database';

        var workbook = XLSX.readFile('./uploads/' + fileName);

        var worksheet = workbook.Sheets[workbook.SheetNames[0]];

        var json_conversion = XLSX.utils.sheet_to_json(worksheet);

        MongoClient.connect(url, function (err, db) {
            if (err) {
                console.log('Unable to connect to the mongoDB server. Error:', err);
            } else {
                console.log('Connection established to', url);

                db.open(function(err, client){
                    client.createCollection("test_collection", function(err, col) {
                        client.collection("test_collection", function(err, col) {
                            {
                                json_conversion.forEach(function(record) {
                                    col.insert(record, function(err, result) {
                                        if(err) {
                                            console.log(err);
                                        }
                                        else {

                                        }
                                    });
                                })
                            }
                        });
                    });
                });
                console.log("finished");
                db.close();
            }
        });

};

在我的server.js中,我需要这个模块如下:

var excelFileParser = require("excel-file-parser");

在我的节点应用程序中的某个点,我需要执行此模块的功能,并传递一个文件名进行解析。 当我这样尝试时:

excelFileParser(file.fieldname);

我得到了

TypeError: object is not a function

异常。

从server.js中运行我的模块的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

让我们看看你的模块:

exports.excelFileParser = function(fileName) {
    ...
}

当您致电require('excel-file-parser')时,您基本上会获得exports个对象。

因此,要调用您创建的函数,您需要调用函数:

var myParser = require("excel-file-parser");
myParser.excelFileParser('filename');