fix: throw useful error on missing platform module.

This commit is contained in:
Misko Hevery 2016-07-29 14:45:05 -07:00
parent 8c8754e573
commit 73f02c7861
4 changed files with 69 additions and 47 deletions

View File

@ -684,7 +684,7 @@ export function main() {
expect(elAst.providers[0].providers).toEqual([dirProvider]); expect(elAst.providers[0].providers).toEqual([dirProvider]);
}); });
it('should throw if mixing multi and non multi providers', () => { it('if mixing multi and non multi providers', () => {
var provider0 = createProvider('service0'); var provider0 = createProvider('service0');
var provider1 = createProvider('service0', {multi: true}); var provider1 = createProvider('service0', {multi: true});
var dirA = createDir('[dirA]', {providers: [provider0]}); var dirA = createDir('[dirA]', {providers: [provider0]});

View File

@ -313,7 +313,10 @@ export class PlatformRef_ extends PlatformRef {
const ngZoneInjector = const ngZoneInjector =
ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector); ReflectiveInjector.resolveAndCreate([{provide: NgZone, useValue: ngZone}], this.injector);
const moduleRef = moduleFactory.create(ngZoneInjector); const moduleRef = moduleFactory.create(ngZoneInjector);
const exceptionHandler: ExceptionHandler = moduleRef.injector.get(ExceptionHandler); const exceptionHandler: ExceptionHandler = moduleRef.injector.get(ExceptionHandler, null);
if (!exceptionHandler) {
throw new Error('No ExceptionHandler. Is platform module (BrowserModule) included?');
}
ObservableWrapper.subscribe(ngZone.onError, (error: NgZoneError) => { ObservableWrapper.subscribe(ngZone.onError, (error: NgZoneError) => {
exceptionHandler.call(error.error, error.stackTrace); exceptionHandler.call(error.error, error.stackTrace);
}); });

View File

@ -141,6 +141,18 @@ export function main() {
expect(errorLogger.res).toEqual(['EXCEPTION: Test']); expect(errorLogger.res).toEqual(['EXCEPTION: Test']);
}); });
})); }));
it('should throw useful error when ApplicationRef is not configured', async(() => {
@NgModule()
class EmptyModule {
}
return defaultPlatform.bootstrapModule(EmptyModule)
.then(() => fail('expecting error'), (error) => {
expect(error.message)
.toEqual('No ExceptionHandler. Is platform module (BrowserModule) included?');
});
}));
}); });
describe('bootstrapModuleFactory', () => { describe('bootstrapModuleFactory', () => {

View File

@ -65,54 +65,61 @@ const BaseConfig = {
}; };
if (platform == 'node') { if (platform == 'node') {
tscWatch = new TscWatch(Object.assign({ tscWatch = new TscWatch(Object.assign(
tsconfig: 'modules/tsconfig.json', {
onChangeCmds: [ tsconfig: 'modules/tsconfig.json',
processOutputEmitterCodeGen, onChangeCmds: [
[ processOutputEmitterCodeGen,
'node', 'dist/tools/cjs-jasmine', '--', '{@angular,benchpress}/**/*_spec.js', [
'@angular/compiler-cli/test/**/*_spec.js' 'node', 'dist/tools/cjs-jasmine', '--', '{@angular,benchpress}/**/*_spec.js',
] '@angular/compiler-cli/test/**/*_spec.js'
] ]
}, BaseConfig)); ]
},
BaseConfig));
} else if (platform == 'browser') { } else if (platform == 'browser') {
tscWatch = new TscWatch(Object.assign({ tscWatch = new TscWatch(Object.assign(
tsconfig: 'modules/tsconfig.json', {
onStartCmds: [ tsconfig: 'modules/tsconfig.json',
[ onStartCmds: [
'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9876', [
'karma-js.conf.js' 'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9876',
], 'karma-js.conf.js'
[ ],
'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9877', [
'modules/@angular/router/karma.conf.js' 'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9877',
], 'modules/@angular/router/karma.conf.js'
], ],
onChangeCmds: [ ],
['node', 'node_modules/karma/bin/karma', 'run', 'karma-js.conf.js', '--port=9876'], onChangeCmds: [
['node', 'node_modules/karma/bin/karma', 'run', '--port=9877'], ['node', 'node_modules/karma/bin/karma', 'run', 'karma-js.conf.js', '--port=9876'],
] ['node', 'node_modules/karma/bin/karma', 'run', '--port=9877'],
}, BaseConfig)); ]
},
BaseConfig));
} else if (platform == 'browserNoRouter') { } else if (platform == 'browserNoRouter') {
tscWatch = new TscWatch(Object.assign({ tscWatch = new TscWatch(Object.assign(
tsconfig: 'modules/tsconfig.json', {
onStartCmds: [ tsconfig: 'modules/tsconfig.json',
[ onStartCmds: [[
'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9876', 'node', 'node_modules/karma/bin/karma', 'start', '--no-auto-watch', '--port=9876',
'karma-js.conf.js' 'karma-js.conf.js'
] ]],
], onChangeCmds: [
onChangeCmds: [ ['node', 'node_modules/karma/bin/karma', 'run', 'karma-js.conf.js', '--port=9876'],
['node', 'node_modules/karma/bin/karma', 'run', 'karma-js.conf.js', '--port=9876'], ]
] },
}, BaseConfig)); BaseConfig));
} else if (platform == 'tools') { } else if (platform == 'tools') {
tscWatch = new TscWatch(Object.assign({ tscWatch = new TscWatch(Object.assign(
tsconfig: 'tools/tsconfig.json', {
onChangeCmds: [[ tsconfig: 'tools/tsconfig.json',
'node', 'dist/tools/cjs-jasmine/index-tools', '--', '@angular/tsc-wrapped/**/*{_,.}spec.js' onChangeCmds: [[
]] 'node', 'dist/tools/cjs-jasmine/index-tools', '--',
}, BaseConfig)); '@angular/tsc-wrapped/**/*{_,.}spec.js'
]]
},
BaseConfig));
} else { } else {
throw new Error(`unknown platform: ${platform}`); throw new Error(`unknown platform: ${platform}`);
} }