Meteor.js and npm

Meteor.js and npm

本文关键字:npm and js Meteor      更新时间:2023-09-26

所以我使用流星包meteorhacks:npm,以便在我的流星代码中使用npm包。我有一个模板:

Template.upload.events({
    'submit form': function(event){
        var file1 = document.getElementById("file1").files;
        var file2 = $('[name=file1]').val();
        //console.log(file1[0].type);
        var reader = new FileReader();
        reader.onload = function(event) {
            var contents = event.target.result;
            Meteor.call("saveFileinFolder",contents);
            //console.log(contents);
        };

这是我调用的Meteor方法:

Meteor.methods({
    saveFileinFolder: function (content){
        var nodeFS = Meteor.npmRequire('node-fs');
        var fs = new nodeFS({version:'0.1.7'});
        console.log(content);
    }
});

我试图使用节点包node-fs以便将文件保存到文件夹,但我一直得到错误:

I20150825-18:37:51.645(-4)? Exception while invoking method 'saveFileinFolder' TypeError: object is not a function
I20150825-18:37:51.646(-4)?     at [object Object].Meteor.methods.saveFileinFolder (app/server/home.js:4:15)
I20150825-18:37:51.646(-4)?     at maybeAuditArgumentChecks (packages/ddp/livedata_server.js:1617:1)
I20150825-18:37:51.646(-4)?     at packages/ddp/livedata_server.js:648:1
I20150825-18:37:51.646(-4)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20150825-18:37:51.646(-4)?     at packages/ddp/livedata_server.js:647:1
I20150825-18:37:51.646(-4)?     at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
I20150825-18:37:51.646(-4)?     at [object Object]._.extend.protocol_handlers.method (packages/ddp/livedata_server.js:646:1)
I20150825-18:37:51.646(-4)?     at packages/ddp/livedata_server.js:546:1

你误解了meteorhacks:npm的使用方法。您需要将所需的版本号放入名为packages.json:

的文件中。

{"node-fs": "0.1.7"}

然后重启meteor,它将为您安装该节点包。然后在您的代码中,继续使用通常的require,只是使用Meteor.npmRequire代替。您将在节点中获得与require相同的对象