SOAP in Node.js

匿名 (未验证) 提交于 2019-12-03 02:56:01

问题:

Sure, you're gonna tell me that SOAP is deprecated and all, well I'm forced to use it.

Now, I've tried with the douche module (https://github.com/marcgreenstock/douche) but it fails when I do this (the WSDL url is fine, in fact I'm trying the provided example at test/index.js)

Client.wsdl.parse(function(wsdl) {   console.log(wsdl); }); 

The error is:

/usr/local/lib/node_modules/douche/lib/douche/wsdl.js:74   attrs.forEach(function(url,index) {         ^ TypeError: Object #<Object> has no method 'forEach'     at [object Object]._read_namespaces (/usr/local/lib/node_modules/douche/lib/douche/wsdl.js:74:9)     at /usr/local/lib/node_modules/douche/lib/douche/wsdl.js:20:10     at IncomingMessage.<anonymous> (/usr/local/lib/node_modules/douche/lib/douche/wsdl.js:102:7)     at IncomingMessage.emit (events.js:81:20)     at HTTPParser.onMessageComplete (http.js:133:23)     at Socket.ondata (http.js:1226:22)     at Socket._onReadable (net.js:683:27)     at IOWatcher.onReadable [as callback] (net.js:177:10) 

About soap (https://github.com/milewise/node-soap) I can't even install it with NPM, it fails:

> node-expat@1.3.2 install /home/warorface/node_modules/soap/node_modules/node-expat > node-waf configure build  > compress@0.1.9 preinstall /home/warorface/node_modules/soap/node_modules/compress > node-waf configure build  Checking for program g++ or c++          : /usr/bin/g++  Checking for program g++ or c++          : /usr/bin/g++  Checking for program cpp                 : /usr/bin/cpp  Checking for program ar                  : /usr/bin/ar  Checking for program ranlib              : /usr/bin/ranlib  Checking for g++                         : ok   Checking for node path                   : not found  Checking for node prefix                 : ok /usr/local  'configure' finished successfully (0.127s) Checking for program cpp                 : /usr/bin/cpp  Checking for program ar                  : /usr/bin/ar  Checking for program ranlib              : /usr/bin/ranlib  Waf: Entering directory `/home/warorface/node_modules/soap/node_modules/node-expat/build' Checking for g++                         : ok   Checking for program gcc or cc           : /usr/bin/gcc  [1/2] cxx: node-expat.cc -> build/default/node-expat_1.o Checking for program ar                  : /usr/bin/ar  Checking for program ranlib              : /usr/bin/ranlib  ../node-expat.cc:6:19: fatal error: expat.h: No existe el fichero o el directorio compilation terminated. Waf: Leaving directory `/home/warorface/node_modules/soap/node_modules/node-expat/build' Build failed:  -> task failed (err #1):      {task: cxx node-expat.cc -> node-expat_1.o} Checking for gcc                         : ok   Checking for node path                   : not found  Checking for node prefix                 : ok /usr/local  Checking for library z                   : npm ERR! error installing node-expat@1.3.2 Error: node-expat@1.3.2 install: `node-waf configure build` npm ERR! error installing node-expat@1.3.2 `sh "-c" "node-waf configure build"` failed with 1 npm ERR! error installing node-expat@1.3.2     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/exec.js:49:20) npm ERR! error installing node-expat@1.3.2     at ChildProcess.emit (events.js:67:17) npm ERR! error installing node-expat@1.3.2     at ChildProcess.onexit (child_process.js:192:12) npm ERR! error installing soap@0.0.1 Error: node-expat@1.3.2 install: `node-waf configure build` npm ERR! error installing soap@0.0.1 `sh "-c" "node-waf configure build"` failed with 1 npm ERR! error installing soap@0.0.1     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/exec.js:49:20) npm ERR! error installing soap@0.0.1     at ChildProcess.emit (events.js:67:17) npm ERR! error installing soap@0.0.1     at ChildProcess.onexit (child_process.js:192:12) npm ERR! node-expat@1.3.2 install: `node-waf configure build` npm ERR! `sh "-c" "node-waf configure build"` failed with 1 npm ERR!  npm ERR! Failed at the node-expat@1.3.2 install script. npm ERR! This is most likely a problem with the node-expat package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR!     node-waf configure build npm ERR! You can get their info via: npm ERR!     npm owner ls node-expat npm ERR! There is likely additional logging output above. npm ERR!  npm ERR! System Linux 2.6.38-8-generic-pae npm ERR! command "node" "/usr/local/bin/npm" "install" "soap" Traceback (most recent call last):   File "/usr/local/bin/node-waf", line 16, in <module>     Scripting.prepare(t, os.getcwd(), VERSION, wafdir)   File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 145, in prepare     prepare_impl(t, cwd, ver, wafdir)   File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 135, in prepare_impl     main()   File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 188, in main     fun(ctx)   File "/usr/local/bin/../lib/node/wafadmin/Scripting.py", line 241, in configure     conf.sub_config([''])   File "/usr/local/bin/../lib/node/wafadmin/Configure.py", line 221, in sub_config     self.recurse(k, name='configure')   File "/usr/local/bin/../lib/node/wafadmin/Utils.py", line 634, in recurse     f(self)   File "/home/warorface/node_modules/soap/node_modules/compress/wscript", line 18, in configure   File "/usr/local/bin/../lib/node/wafadmin/Tools/config_c.py", line 444, in check     ret = self.run_c_code(*k, **kw)   File "/usr/local/bin/../lib/node/wafadmin/Tools/config_c.py", line 530, in run_c_code     bld.compile()   File "/usr/local/bin/../lib/node/wafadmin/Build.py", line 292, in compile     os.chdir(back) OSError: [Errno 2] No such file or directory: '/home/warorface/node_modules/soap/node_modules/compress/build/.conf_check_0' npm ERR! error installing compress@0.1.9 Error: compress@0.1.9 preinstall: `node-waf configure build` npm ERR! error installing compress@0.1.9 `sh "-c" "node-waf configure build"` failed with 1 npm ERR! error installing compress@0.1.9     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/exec.js:49:20) npm ERR! error installing compress@0.1.9     at ChildProcess.emit (events.js:67:17) npm ERR! error installing compress@0.1.9     at ChildProcess.onexit (child_process.js:192:12) npm ERR!  

回答1:

Fixed that issue and forked the marcgreenstock/douche repository on github:

https://github.com/kr1sp1n/douche

Install my customized douche:

  1. git clone git@github.com:kr1sp1n/douche.git
  2. cd douche
  3. npm link
  4. cd /path/to/your/project
  5. npm uninstall douche
  6. npm link douche

That's it!



文章来源: SOAP in Node.js
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!