Javascript 将JS库xml2js与Angular 2一起使用

Javascript 将JS库xml2js与Angular 2一起使用,javascript,angularjs,node.js,typescript,angular,Javascript,Angularjs,Node.js,Typescript,Angular,我试图在Angular 2(带有TypeScript的RC 1)Web应用程序中使用xml2js作为XML解析器。然而,我只得到一些错误,没有工作的解决方案 以下是我一步一步做的: 通过npm安装xml2js安装xml2js 通过tsd安装xml2js根据d.ts-file安装 包含指向my index.html的脚本链接: 通过将'xml2js':'../node_modules/xml2js'添加到映射和'xml2js':{defaultExtension:'js'}添加到包来配置Syst

我试图在Angular 2(带有TypeScript的RC 1)Web应用程序中使用xml2js作为XML解析器。然而,我只得到一些错误,没有工作的解决方案

以下是我一步一步做的:

  • 通过
    npm安装xml2js安装xml2js
  • 通过
    tsd安装xml2js根据d.ts-file安装
  • 包含指向my index.html的脚本链接:
  • 通过将
    'xml2js':'../node_modules/xml2js'
    添加到映射和
    'xml2js':{defaultExtension:'js'}
    添加到包来配置SystemJS
  • 通过从'xml2js'导入{Parser},在我的组件中导入xml2js的解析器
  • 尝试在组件的构造函数中使用它:
    var parser=new parser();
    var xml=“你好,xml2js!”
    parser.parseString(xml,函数(err,result){
    console.dir(结果);
    });
这是浏览器控制台在打开包含组件的网页时告诉我的:

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

得到file:///C:/xxx/source/node_modules/xml2js net::找不到错误文件

以及

html:17错误:错误:XHR加载错误file:///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/node_modules/xml2js 作为来自的“xml2js”file:///C:/xxx/source/frontend/angular/components/mycomponent/mycomponent.js

“sax”位于通过npm安装的
node_modules/xml2js/node_modules/sax
中。
安装外部库时我错过了什么?对于Angular 2&TypeScript,是否有“更好”的方法使用外部JS库?

是的,有更好的方法


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

非常感谢!这是一个很好的简单解决方案。不幸的是,当我尝试此方法时,我在控制台中看到一个引用错误:找不到变量require。@sss4r抱歉,我不知道为什么会发生这种情况。信息太少了。@sss4r我在谷歌上搜索了一下,发现这似乎是一个常见的问题,很多github问题都在讨论这个问题。也许你可以在那里找到你的答案。同样。最终它抱怨说,它找不到“事件”或“计时器”,也不知道如何处理。