複数の 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 の開発を始めたばかりです。しかし、私はもっと吸わないようにしています!誰かが私に手を貸してくれるなら、私はあなたの借りた専門知識に非常に感謝しています.