【问题标题】:Use JS library xml2js with Angular 2在 Angular 2 中使用 JS 库 xml2js
【发布时间】:2016-12-07 20:00:50
【问题描述】:

我正在尝试在 Angular 2(带有 TypeScript 的 RC 1)Web 应用程序中使用 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 加载 file:///C:/xxx/source/node_modules/xml2js 为“xml2js”时出错

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

【问题讨论】:

  • 相同。最终它抱怨它找不到“事件”或“计时器”并且不知道如何处理。

标签: javascript angularjs node.js typescript angular


【解决方案1】:

是的,有更好的方法。

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

【讨论】:

  • 非常感谢!这是一个很好用的简单解决方案。
  • 不幸的是,当我尝试这个时,我在控制台中看到一个 ReferenceError: Can't find variable require.
  • @sss4r 抱歉,我不知道为什么会这样。信息太少了。
  • @sss4r 我用谷歌搜索了它,发现它看起来像一个常见问题,很多 github 问题都在谈论这个问题。也许你可以在那里找到答案。
猜你喜欢
  • 2017-08-09
  • 2016-01-27
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 2016-09-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多