web-dev-qa-db-ja.com

xml2js Angular 6:「ストリーム」と「タイマー」を解決できません

サーバーから取得したxmlデータを解析したいと思います。残念ながらHttpClientはxmlをサポートせず、jsonのみをサポートしているため、パッケージxml2js

npm install xml2js --save
npm install @types/xml2js --save-dev

それから私はこれを次のように使用しようとします:

import {Parser} from 'xml2js';

Parser.parseString(xml_str, function (err, result) {
    console.dir(result);
});

実行すると、次の2つのエラーが発生します。

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'

この問題の解決策は見つかりませんでした。Angular6のみの問題かもしれません。 Angular6でxmlを解析する方法はありますか?

8
Iter Ator

これらの依存関係をインストールする必要があります。残念ながら十分に文書化されていません。

npm install --save stream timers
15
andahan

Angularがxml2jsを認識するには、次の手順が必要です。

  1. 「npm install timers-browserify」を使用して、timers-browserifyノードモジュールを追加します。
  2. 「npm install stream-browserify」を使用して、stream-browserifyノードモジュールを追加します。
  3. Tsconfig.jsonに次のパスマッピングを追加します。
    "compilerOptions": {
      "paths": {
        "timers": [
          "node_modules/timers-browserify"
        ],
        "stream": [
          "node_modules/stream-browserify"
        ],
      }
    }
4