Angular2 Material Design alpha.9-3 has "404 not found" for @ angular / material

I followed the instructions in angular material2 getting started to install @ angular / material. Through Atom, I updated package.json, app.module and outside of the Getting Started instructions, I updated systemjs.config as follows: '@ angular / material': 'node_modules / @ angular / material',

I get these errors: zone.js: 1274 GET http: // localhost: 3000 / node_modules / @ angular / material / 404 (not found)

(SystemJS) XHR error (404 not found) loading http: // localhost: 3000 / node_modules / @ angular / material (...)

I believe I traced this problem to the fact that many @ angular folders have a bundle subfolder containing the umd file, but the @ angular / material folder does not have a package subfolder. Therefore, the unpack function cannot find @ angular / material / material.umd.js

systemjs is outside my comfort zone, so I am not sure about this, but I cannot solve the 404 problem with the new alpha.9-3 file structure. Here is the corresponding code (other components not shown).

package.json

"@angular/material": "2.0.0-alpha.9-3", 

app.module

  import { MaterialModule } from '@angular/material'; @NgModule({ imports: MaterialModule.forRoot(), 

systemjs.config

  (function(global) { var map = { 'app': 'app', // angular bundles '@angular': 'node_modules/@angular', // other libraries 'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api', 'rxjs': 'node_modules/rxjs', '@angular/material': 'node_modules/@angular/material', }; var packages = { 'app': { main: 'main.js', defaultExtension: 'js' }, 'rxjs':{ defaultExtension: 'js' }, 'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' }, }; var ngPackageNames = [ 'common', 'compiler', 'core', 'forms', 'http', 'platform-browser', 'platform-browser-dynamic', 'platform-server', 'router', 'upgrade', ]; //adding 'material' to the array causes a different 404 error function packIndex(pkgName) { packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; } function packUmd(pkgName) { packages['@angular/'+pkgName] = { main: 'bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; } var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; ngPackageNames.forEach(setPackageConfig); var config = { map: map, packages: packages }; System.config(config); })(this); //end of function(global) 

I checked the folder / file structure and @ angular / material / material.umd.js definitely exists. How to get rid of 404 not found?

+6
source share
1 answer

Remove from map

following:

'@ angular / material': 'node_modules / @ angular / material', strike>

Add material to the ngPackageNames array:

 var ngPackageNames = [ ... 'material' ]; 

And then replace your packUmd function with

 function packUmd(pkgName) { packages['@angular/'+pkgName] = { main: (pkgName !== 'material' ? 'bundles/' : '') + pkgName + '.umd.js', defaultExtension: 'js' }; } 

After that he should work

Or use this configuration, as in angular2 quick start:

 (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: 'app', // 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', '@angular/animations': 'npm:@angular/animations/bundles/animations.umd.js', '@angular/animations/browser': 'npm:@angular/animations/bundles/animations-browser.umd.js', '@angular/platform-browser/animations': 'npm:@angular/platform-browser/bundles/platform-browser-animations.umd.js', '@angular/material': 'npm:@angular/material/bundles/material.umd.js' // other libraries 'rxjs': 'npm:rxjs' }, // packages tells the System loader how to load when no filename and/or no extension packages: { app: { main: './main.js', defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' } } }); })(this); 
+10
source

All Articles