[解決済み】angularJS2プロジェクトでsystemjs.config.jsファイルをどこに置くか/見つけるか?
質問
私はangular 2の初心者で、私のプロジェクトでng2-datetime-pickerを使おうとしています。ng2-datetime-pickerパッケージをインストールした後、プロジェクトを実行すると、次のようなメッセージが表示されます。 ng2-datetime-pickerが見つからないという404のエラーが発生しました。 しかし、私のプロジェクトを見てみると、systemjs.config.js ファイルが見当たりません。
- systemjs.config.js ファイルはどこに存在するのでしょうか?
-
以下のコードは、systemjs.config.js ファイルを意味するのでしょうか?
System.import('app').catch(function (err) { console.error(err); });
-
もしそうなら、このファイルにmapとpackagesを追加するにはどうしたらいいでしょうか?
map['ng2-datetime-picker'] = 'node_modules/ng2-datetime-picker/dist'; packages['ng2-datetime-picker'] = { main: 'ng2-datetime-picker.umd.js', defaultExtension: 'js' }. 更新1
これは私のsystemjs.config.jsファイルです。
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
// our app is within the app folder
app : 'ScriptsApp', // 'dist',
// angular bundles
'@angular/core': 'npm:@angular/core/bundles/core.umd.js',
'@angular/common': 'npm:@angular/common/bundles/common.umd.js',
'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
'@angular/http': 'npm:@angular/http/bundles/http.umd.js',
'@angular/router': 'npm:@angular/router/bundles/router.umd.js',
'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
// other libraries
'rxjs': 'npm:rxjs',
'ng2-datetime-picker': 'npm:ng2-datetime-picker'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: { main: './boot.js', defaultExtension: 'js' },
rxjs: { defaultExtension: 'js' },
'ng2-datetime-picker': { main: 'ng2-datetime-picker.umd.js', defaultExtension: 'js' }
}
});
})(this);
で、index.js ファイルに追加された参照は
<!-- Polyfills for older browsers -->
<script src="https://unpkg.com/core-js/client/shim.min.js"></script>
<script src="https://unpkg.com/[email protected]?main=browser"></script>
<script src="https://unpkg.com/[email protected]/dist/system.src.js"></script>
<script src="https://cdn.rawgit.com/angular/angular.io/b3c65a9/public/docs/_examples/_boilerplate/systemjs.config.web.js"></script>
<script src="systemjs.config.js"></script>
<script>
System.import('app').catch(function (err) { console.error(err); });
</script>
systemjs.config.js ファイルを追加し、index.html ファイルに参照を追加すると、このようなエラーが発生します。
解決方法は?
通常のスクリプトのように、"systemjs.config.js"を作成し、index.htmlからロードする必要があります。
<script src="systemjs.config.js"></script>
また、コンフィグスクリプトの前にSystem.JSをインクルードすることを確認してください。
<script src="node_modules/systemjs/dist/system.src.js"></script>
次のスクリプトは、最初のモジュールをロードします。
System.import('app').catch(function (err) { console.error(err); });
デフォルトでは(systemjs.config.js に従って)、SystemJS は app.js または app/main.js を探します。
systemjs.config.js ファイルで、node パッケージを index.js または package.json が存在するパスにマッピングし、モジュールがどこにあるかを示すようにしたいです。モジュールは、あなたが使おうとしているモジュールローダーと互換性のあるものであるべきです。AMD、UMD、CommonJS、SystemJS、es6など。
systemjs.config.jsファイルでは、以下のようにするとうまくいくはずです。
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker'
...
},
'packages': {
'ng2-datetime-picker': 'dist/ng2-datetime-picker.umd.js'
}
あるいは、UMDファイルを直接マッピングすることもできます。
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker/dist/ng2-datetime-picker.umd.js'
...
}
index.jsはrequire構文を使っているので、以下はCommonJS/AMD/SystemJSでのみ動作します。
'paths': {
'npm:':'node_modules/'
},
'map': {
'ng2-datetime-picker': 'npm:ng2-datetime-picker'
...
},
'packages': {
'ng2-datetime-picker': 'dist/index.js'
}
EDIT
これでうまくいくはずです。
// packages tells the System loader how to load when no filename and/or no extension
packages: {
app: { main: 'boot.js', defaultExtension: 'js' },
rxjs: { defaultExtension: 'js' },
'ng2-datetime-picker': { main: 'dist/ng2-datetime-picker.umd.js', defaultExtension: 'js' }
}
関連
-
[解決済み】 node_modules/rxjs/internal/types.d.ts(81,44): エラー TS1005: ';' Angular 6のインストール後に予想されたエラー
-
[解決済み] node_modules が空になったので、`npm install`を実行する必要があるかもしれない。
-
[解決済み] 未定義のプロパティ 'filter' を読み取ることができません。
-
[解決済み] ng serve または firebase serve を終了させる方法
-
[解決済み] CLIでコンポーネントを削除する最も良い方法は何ですか?
-
[解決済み] プロパティ 'json' はタイプ 'Object' に存在しません。
-
[解決済み] AngularのngClassとトグルクラスのクリックイベント
-
[解決済み] Angular 6 Error trying to diff '[object Object]'. 配列と反復記号のみが許可されます。
-
[解決済み] ブレークポイントの解除 - VS Code | Chrome | Angular
-
[解決済み] Angular 2 : NgModule のメタデータが見つかりません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angularで実際のエラーメッセージの代わりに「Http failure response for (unknown url): 0 Unknown Error」が表示されるのですが。
-
[解決済み】アンギュラーコンポーネントにサービスを注入しようとするとエラー "EXCEPTION: Can't resolve all parameters for component"、なぜ?
-
[解決済み] Angular 4: コンポーネントファクトリが見つかりません。@NgModule.entryComponents に追加しましたか?
-
[解決済み] Angular 2で簡単なアコーディオンを作成するにはどうすればよいですか?
-
[解決済み] エラーです。複数のモジュールがマッチしました。skip-import オプションを使用して、最も近いモジュールへのコンポーネントのインポートをスキップしてください。
-
[解決済み] Visual Code で未定義のプロパティ 'thisCompilation' を読み取ることができません。
-
[解決済み] Angular CLIでコンポーネントの名前を変更する方法は?
-
[解決済み] Typescript - コードが TS1128: Declaration or Statement expected というエラーでビルドに失敗するが、コードを提供すると期待通りに実行される。
-
[解決済み] Angular CLIでピア依存をインストールする場合の対処方法は?
-
[解決済み] switchの使用時に「ステートメントはif文でフィルタリングされなければならない」というtslintのクレームが発生する。