Angular 6中的xml2js:无法解析'stream'和'timers'

Ite*_*tor 8 javascript xml typescript angular

我想解析从服务器检索的xml数据.不幸的HttpClient是不支持xml,只支持json,因此我安装了包xml2js:

npm install xml2js --save
npm install @types/xml2js --save-dev
Run Code Online (Sandbox Code Playgroud)

然后我尝试像这样使用它:

import {Parser} from 'xml2js';

Parser.parseString(xml_str, function (err, result) {
    console.dir(result);
});
Run Code Online (Sandbox Code Playgroud)

如果我运行它,我会收到这两个错误:

WARNING in ./node_modules/xml2js/node_modules/sax/lib/sax.js
Module not found: Error: Can't resolve 'stream' in 'C:\projects\app\node_modules\xml2js\node_modules\sax\lib'

ERROR in ./node_modules/xml2js/lib/parser.js
Module not found: Error: Can't resolve 'timers' in 'C:\projects\app\node_modules\xml2js\lib'
Run Code Online (Sandbox Code Playgroud)

我没有找到任何解决这个问题的方法,也许它只是一个Angular6问题.有没有办法解析Angular6中的xml?

小智 21

Angular 要识别 xml2js,需要以下步骤:

  1. 使用“npm install timers-browserify”添加 timers-browserify 节点模块
  2. 使用“npm install stream-browserify”添加流浏览器节点模块
  3. 在 tsconfig.json 中添加以下路径映射:
    "compilerOptions": {
      "paths": {
        "timers": [
          "node_modules/timers-browserify"
        ],
        "stream": [
          "node_modules/stream-browserify"
        ],
      }
    }
Run Code Online (Sandbox Code Playgroud)


小智 15

您必须安装这些依赖项.遗憾的是,没有详细记录.

npm install --save stream timers
Run Code Online (Sandbox Code Playgroud)