将JS库xml2js与Angular 2

时间:2016-08-02 12:48:32

标签: javascript angularjs node.js typescript angular

我试图在Angular 2(带有TypeScript的RC 1)webapplication中使用xml2js作为XML解析器。但是我只会遇到一些错误而且没有工作解决方案。

以下是我一步一步做的事情:

  • 通过npm install xml2js
  • 安装了xml2js
  • 根据d.ts文件通过tsd install xml2js
  • 安装
  • 包含指向我的index.html的脚本链接:<script src="../node_modules/xml2js/lib/xml2js.js"></script>
  • 通过将'xml2js': '../node_modules/xml2js'添加到地图并将'xml2js': { defaultExtension: 'js' }添加到包
  • 来配置SystemJS
  • 通过import {Parser} from 'xml2js';
  • 导入我的组件中的xml2js解析器
  • 尝试在组件的构造函数中使用它:
    var parser = new Parser(); var xml = "<root>Hello xml2js!</root>" parser.parseString(xml, function (err, result) { console.dir(result); });

这是浏览器控制台在打开包含该组件的网页时告诉我的内容:

  

module.js:440未捕获错误:找不到模块'sax'

  

GET file:/// C:/ xxx / source / node_modules / xml2js net :: ERR_FILE_NOT_FOUND

以及

  

index.html:17错误:错误:加载文件时出现XHR错误:/// C:/ xxx / source / node_modules / xml2js
          在ZoneDelegate.invokeTask(file:/// C:/xxx/source/node_modules/zone.js/dist/zone.js:356:38)
          在Zone.runTask(file:/// C:/xxx/source/node_modules/zone.js/dist/zone.js:256:48)
          在XMLHttpRequest.ZoneTask.invoke(file:/// C:/xxx/source/node_modules/zone.js/dist/zone.js:423:34)
      从file:/// C:/xxx/source/frontend/angular/components/mycomponent/mycomponent.js

将文件:/// C:/ xxx / source / node_modules / xml2js加载为“xml2js”时出错

“sax”位于node_modules/xml2js/node_modules/sax,通过npm安装。 我错过了什么安装外部库?是否有一种“更好”的方式来使用Angular 2&amp; 2的外部JS库。打字稿?

1 个答案:

答案 0 :(得分:2)

是的,还有更好的方法。

您可以使用System.set('xml2js', System.newModule(require('xml2js')))在systemjs中加载本地xml2js模块。