在NodeJS中加载Vanilla JS库= undefined不是一个函数

时间:2016-10-14 10:55:54

标签: javascript jquery node.js soap

以相关问题为基础: Load "Vanilla" Javascript Libraries into Node.js

我正在尝试将jQuery.soap加载为NodeJS模块。我已经按照链接问题中的步骤进行了操作,但是我在调​​用函数时遇到了一些问题。 Soap插件定义:

return $.soap = soap;

调用该功能。所以我用这段代码创建了一个index.js:

var fs = require('fs');

// Read and eval library
filedata = fs.readFileSync('./node_modules/jquery.soap/jquerysoap-  lib/jquery.soap.js','utf8');
eval(filedata);

exports.Soap = $.soap;

然后我在我的nodeJS文件中以这种方式加载它。

 var Soap = require('jquery.soap');

以这种方式使用它:

Soap({
    url: myurl,
    appendMethodToURL: false,
    SOAPAction: '',
    ....
)};

我得到'未定义不是函数'。我输出正确吗?我试图把

exports.Soap = soap;

而不是

exports.Soap = $.soap;

但仍然无法正常工作。一旦我这样做,readFileSync应该可以调用$ .soap? 提前致谢

编辑:在我的VanillaJS模块中,我有类似的东西:

function($){
    function soap (options) {
    }
return $.soap = soap;
 }

1 个答案:

答案 0 :(得分:0)

您没有正确导入/导出。您将'Soap'导出为模块的成员,但随后将'Soap'导入为'Soap'仅为其成员的整个模块。

你应该去:

exports = $.soap;

或:

var Soap = require('jquery.soap').Soap;
BTW称之为(下套)'肥皂'。不要违反惯例。