在Angular 2中使用JS库xml2js

我正在尝试在Angular 2(带有TypeScript的RC 1)web应用程序中使用xml2js作为XMLparsing器。 但是,我只是得到一些错误,没有工作的解决scheme

这是我一步一步做的:

  • 通过npm install xml2js
  • 按照d.ts-file通过tsd install xml2js
  • 包含脚本链接到我的index.html: <script src="../node_modules/xml2js/lib/xml2js.js"></script>
  • configurationSystemJS通过添加'xml2js': '../node_modules/xml2js'映射和'xml2js': { defaultExtension: 'js' }到包
  • 通过import {Parser} from 'xml2js'; xml2js中的import {Parser} from 'xml2js';我的组件中的xml2js import {Parser} from '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文件:/// 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加载file:/// C:/ xxx / source / node_modules / xml2js为“xml2js”时出错

“sax”位于通过npm安装的node_modules/xml2js/node_modules/sax中。 我错过了什么安装外部库? 有没有一种“更好”的方式来使用Angular 2和TypeScript的外部JS库?

是的,有一个更好的办法。

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

对于现场演示,你可以访问我的Github回购