mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
fix(core): add warning when using zoneless but zone.js is still loaded (#55769)
Users may be using zoneless, but are still loading Zone.js in which case they won't get the full benefits like reduced bundle size. These changes detect such a case and log a warning. PR Close #55769
This commit is contained in:
parent
834e627d9e
commit
ae0baa2522
3 changed files with 15 additions and 1 deletions
|
|
@ -147,6 +147,8 @@ export const enum RuntimeErrorCode {
|
|||
// (undocumented)
|
||||
UNEXPECTED_ZONE_STATE = 909,
|
||||
// (undocumented)
|
||||
UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE = 914,
|
||||
// (undocumented)
|
||||
UNKNOWN_BINDING = 303,
|
||||
// (undocumented)
|
||||
UNKNOWN_ELEMENT = 304,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import {Injectable} from '../../di/injectable';
|
|||
import {inject} from '../../di/injector_compatibility';
|
||||
import {EnvironmentProviders} from '../../di/interface/provider';
|
||||
import {makeEnvironmentProviders} from '../../di/provider_collection';
|
||||
import {RuntimeError, RuntimeErrorCode} from '../../errors';
|
||||
import {RuntimeError, RuntimeErrorCode, formatRuntimeError} from '../../errors';
|
||||
import {PendingTasks} from '../../pending_tasks';
|
||||
import {
|
||||
scheduleCallbackWithMicrotask,
|
||||
|
|
@ -294,6 +294,17 @@ export class ChangeDetectionSchedulerImpl implements ChangeDetectionScheduler {
|
|||
*/
|
||||
export function provideExperimentalZonelessChangeDetection(): EnvironmentProviders {
|
||||
performanceMarkFeature('NgZoneless');
|
||||
|
||||
if ((typeof ngDevMode === 'undefined' || ngDevMode) && typeof Zone !== 'undefined' && Zone) {
|
||||
const message = formatRuntimeError(
|
||||
RuntimeErrorCode.UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE,
|
||||
`The application is using zoneless change detection, but is still loading Zone.js.` +
|
||||
`Consider removing Zone.js to get the full benefits of zoneless. ` +
|
||||
`In applcations using the Angular CLI, Zone.js is typically included in the "polyfills" section of the angular.json file.`,
|
||||
);
|
||||
console.warn(message);
|
||||
}
|
||||
|
||||
return makeEnvironmentProviders([
|
||||
{provide: ChangeDetectionScheduler, useExisting: ChangeDetectionSchedulerImpl},
|
||||
{provide: NgZone, useClass: NoopNgZone},
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ export const enum RuntimeErrorCode {
|
|||
VIEW_ALREADY_DESTROYED = 911,
|
||||
COMPONENT_ID_COLLISION = -912,
|
||||
IMAGE_PERFORMANCE_WARNING = -913,
|
||||
UNEXPECTED_ZONEJS_PRESENT_IN_ZONELESS_MODE = 914,
|
||||
|
||||
// Signal integration errors
|
||||
REQUIRED_INPUT_NO_VALUE = -950,
|
||||
|
|
|
|||
Loading…
Reference in a new issue