2

Azure DevOps YAML パイプラインを使用して、Angular 9 アプリケーションをビルド/デプロイしています。YAML には、次のようにビルドするための Powershell スクリプトが含まれています。

- powershell: |
    $angularBuildConfiguration = "MyBuildConfig";

    write-host "ng-build start";
    ng build --prod --aot --configuration $angularBuildConfiguration;
    write-host "ng-build end";

  workingDirectory: '$(Build.SourcesDirectory)\...'
  displayName: 'Build app - Angular app'

上記はAngularビルドを通過し、最後に「未定義のプロパティ 'toLowerCase'を読み取れないエラー」というメッセージを返します。

workingDirectory および angularBuildConfiguration パラメーターの値が意図したとおりであることを確認しました。また、それらをハードコードされた値に置き換えて、同じ結果を得ました。上記の Powershell スクリプトをビルド サーバー (YAML スクリプトが実際に実行される場所) で実行すると、目的のフォルダーでビルドが失敗し、同じエラー メッセージが表示されますが、ローカル マシンで同じスクリプトを使用してビルドすると、正常にビルドされます。

それが ng ビルドの問題なのか、それとも私の Angular 9 プロジェクト内にエラーの原因となるものがあるのか​​ どうかはわかりません - エラーメッセージに付随するフラグが付けられた「関連付けられた」ファイルはありません

誰にもアイデアはありますか?

4

2 に答える 2

1

これは本当にランダムでした - toLowerCase メッセージは javascript/typescript コードを参照していませんでした - これは内部メッセージでなければなりません。問題がどこにあるかを特定できる唯一の方法は、排除のプロセスです。つまり、Webページを一度にバッチで取り出して、クリーンなprodコンパイルを取得し、1つずつ元に戻して原因を突き止めました。

問題の原因となっているスタイルがありました。次のものを置き換えました。

.gridlines-left {
  border: 1px solid #c0c0c0;
  border-right-width: 0;
  border-top-width: 0;
  border-bottom-width: 0;
}

...と

.gridlines-left {
  border: 1px solid #c0c0c0;
  border-right-style: none;
  border-top-style: none;
  border-bottom-style: none;
}

...そして、コンパイルは正常に実行されました。非常によく似た他の多くのスタイルがあり、border-right/left/bottom/top-width: 0 を設定する同じ戦略を使用したため、どのように/なぜなのかはまだわかりません。クラス - 特定のスタイルは、コンパイル時に他のスタイルと競合する可能性があります - 誰が知っているかはわかりませんが、現在はすべてうまく機能しており、それ以来問題はありません

于 2020-06-02T03:21:45.020 に答える