15 個のモジュールに 100 個のコンポーネントを含むアプリがあります。とangular2.rc5
ですangular-cli.beta10
。
私はアップグレードしていますが、依存関係のためにangular-cli.beta14
維持しています。angular2.rc5
これまではすべて機能していましたが、アップグレードangular-material2
アイコンでエラーが発生し始めました。アイコンだけが必要で、コアがロードされていませんでしたが、それもロードしようとして成功しませんでした。
Uncaught Error: Cannot find module './icon'.
webpackContextResolve @ src:10
webpackContext @ src:5
(anonymous function) @ index.js:13
(anonymous function) @ index.js:3
(anonymous function) @ index.js:8
__webpack_require__ @ bootstrap 7f40e89…:52
(anonymous function) @ app.component.ts:66
__webpack_require__ @ bootstrap 7f40e89…:52
(anonymous function) @ version.js:1
__webpack_require__ @ bootstrap 7f40e89…:52
(anonymous function) @ main.bundle.js:134514
__webpack_require__ @ bootstrap 7f40e89…:52
webpackJsonpCallback @ bootstrap 7f40e89…:23
(anonymous function) @ main.bundle.js:1
webpackContextResolve でデバッグすると、コードは次のようになります。
var map = {
"app/+device/device.module": 505
};
function webpackContext(req) {
return __webpack_require__(webpackContextResolve(req));
};
function webpackContextResolve(req) {
var id = map[req];
if(!(id + 1)) // check for number
throw new Error("Cannot find module '" + req + "'.");
return id;
};
webpackContext.keys = function webpackContextKeys() {
return Object.keys(map);
};
webpackContext.resolve = webpackContextResolve;
module.exports = webpackContext;
webpackContext.id = 14;
メインモジュールは次のようになります。
@NgModule({
imports: [
[...]
SharedModule,
HomeModule,
DeviceModule,
[...]
DeviceModule は次のようになります。
@NgModule({
imports: [
CommonModule,
SharedModule,
deviceRouting
],
そして、次のような SharedModule:
@NgModule({
imports: [
// ANGULAR
BrowserModule,
FormsModule,
RouterModule,
ReactiveFormsModule,
JsonpModule,
// EXTERNAL
MdCoreModule,
MdIconModule,
[...]
webpack を使用するのは初めてで、マップにモジュールが 1 つしかない理由と、具体的にそのモジュールがなぜあるのか、よくわかりません。
何かアドバイス?
アップデート
と呼ばれる場所を見つけました。ルート ファイルでは、いくつかの共有された子をロードする必要があります。rc4 では、ルーター 3.0.0-rc1 では次のようなパスでした: 'device', component: DeviceComponent,
children: [
{
path: 'selector',
component: DeviceSelectorComponent
},
...CONTENT_DEVICE_PREVIEW_ROUTES
]
およびrc5では、ルーター3.0.0を使用
loadChildren: 'app/+device/device.module#DeviceModule',