0

複数の Angular および NodeJS プロジェクトを含むプロジェクト (すべて Typescript) の作成に取り組んできました。その部分はかなりうまくいっていますが、すべての Typescript プロジェクトがプロジェクト モジュール、Typescript インターフェイス、NgModules などを共有できるライブラリ フォルダーをソース フォルダーの下に置くことができれば、かなり素晴らしいと思いました。実際のモデルへの ModuleFactory 参照は、'lib' NgModules に対して正しく変換されません。

デモを作成し、例として GitHub にアップロードしました: https://github.com/ItsBaneDude/broken-external-links

コンパイルスクリプトをnpmスクリプトとして以下に含めました

npm run build-aot  // Builds and fails for production
npm run build-jit  // Builds and runs for dev i.e. "ng serve --dev"
npm run compile-aot // To compile and keep AoT folder in src, just ngc

ブラウザーで自動的に実行されているのを確認できるように、JiT サーブ スクリプトを配置するのを忘れていましたng serve --dev

それで、何が起こるか:あなたは本番用にビルドしようとするとnpm run build-aot、それは言う

ERROR in C:/Users/Bane/Documents/node_projects/broken-external-libs/src/project-ng/aot/lib/modules/test/test.module.ngfactory.ts (10,21): Cannot find module './test.module'.

残念。なぜだろう。

AoT コンパイルを実行し npm run compile-aotます...「動作します」...

さて、AoT foder は で生成されsrc/project-ng/aotます。に進むと.../aot/app/app.module.ngfactory.ts、10 行目にアプリ モジュールのインポートステートメントが表示されます。

import * as i1 from '../../app/app.module';

わかりました、クールです。それは まで正しく続き、正常に../../app/app.module解決されます。

libただし、フォルダー内を除いて AoT フォルダーに再度アクセスすると、10 行目に表示され、TestModuleをインポート...aot/lib/modules/test/test.module.ngfactory.tsしようとしていますが、./test.module

import * as i1 from './test.module';

しかし、私たちが合理的で、自己とコンピューターを認識する人間として知っているように、それはもっと../../../../../lib/modules/test/test.module.

やだ

公平を期すために、私は最近 Angular の開発を始めたばかりです。しかし、私はもっと吸わないようにしています!誰かが私に手を貸してくれるなら、私はあなたの借りた専門知識に非常に感謝しています.

4

1 に答える 1

0

私が発見して行った答えは次のとおりです。

Angular Compiler-CLI < 1.5.0-rc.5 (リリース候補 5 だと思います。変更ログは調べていません) は、この動作をサポートしていません。コードを開発するのに数か月かかるこのプロジェクトの最初の段階で、私は Angular 5 で開発し、期待した結果を得ています。

于 2017-10-29T02:49:57.483 に答える