I just upgraded my app to Angular 6, and upgraded the Kendo Angular packages to their latest releases. When I build the app in AOT mode in the dev server, I get errors like this:
ERROR in ./src/app/foo/bar/bar.component.ngfactory.jsModule not found: Error: Can't resolve '@package-author/package.ngfactory' in 'C:\dev\myProject\src\app\foo\bar'resolve '@package-author/package.ngfactory' in 'C:\dev\myProject\src\app\foo\bar' Parsed request is a module using description file: C:\dev\myProject\package.json (relative path: ./src/app/foo/bar) Field 'browser' doesn't contain a valid alias configuration resolve as module looking for modules in C:/dev/myProject using description file: C:\dev\myProject\package.json (relative path: .) Field 'browser' doesn't contain a valid alias configuration using description file: C:\dev\myProject\package.json (relative path: ./@package-author/package.ngfactory) no extension Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\@progress\kendo-angular-grid.ngfactory doesn't exist .ts Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\@progress\kendo-angular-grid.ngfactory.ts doesn't exist .tsx Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\@progress\kendo-angular-grid.ngfactory.tsx doesn't exist .mjs Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\@progress\kendo-angular-grid.ngfactory.mjs doesn't exist .js Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\@progress\kendo-angular-grid.ngfactory.js doesn't exist as directory C:\dev\myProject\@progress\kendo-angular-grid.ngfactory doesn't exist C:\dev\myProject\src\app\foo\bar\node_modules doesn't exist or is not a directory C:\dev\myProject\src\app\foo\node_modules doesn't exist or is not a directory C:\dev\myProject\src\app\node_modules doesn't exist or is not a directory C:\dev\myProject\src\node_modules doesn't exist or is not a directory C:\dev\node_modules doesn't exist or is not a directory C:\node_modules doesn't exist or is not a directory looking for modules in C:\dev\myProject\node_modules using description file: C:\dev\myProject\package.json (relative path: ./node_modules) Field 'browser' doesn't contain a valid alias configuration using description file: C:\dev\myProject\package.json (relative path: ./node_modules/@package-author/package.ngfactory) no extension Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory doesn't exist .ts Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory.ts doesn't exist .tsx Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory.tsx doesn't exist .mjs Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory.mjs doesn't exist .js Field 'browser' doesn't contain a valid alias configuration C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory.js doesn't exist as directory C:\dev\myProject\node_modules\@progress\kendo-angular-grid.ngfactory doesn't exist
These errors crop up for every one of my app's components that reference a Kendo Angular component. kendo-angular-grid, kendo-angular-chart, and kendo-angular-popup are the most common offenders.
If I build without AOT, it builds fine, but that is not an acceptable solution. Is there some configuration I need to do to make Kendo Angular components work with AOT compilation?
Steps to reproduce:
- install Angular CLI v 6 globally: yarn global add @angular/cli@latest
- generate a new Angular 6 test app: ng new TestApp
- add Kendo Angular Grid: ng add @progress/kendo-angular-grid
- create a component and add a Kendo Angular grid to it (the basic component from the docs works fine for this: https://www.telerik.com/kendo-angular-ui/components/grid/#toc-basic-usage)
- edit angular.json, set projects.TestApp.architect.build.options.aot to true:
{"$schema":"./node_modules/@angular/cli/lib/config/schema.json","version": 1,"newProjectRoot":"projects","projects": {"TestApp": {"root":"","sourceRoot":"src","projectType":"application","prefix":"app","schematics": {},"architect": {"build": {"builder":"@angular-devkit/build-angular:browser","options": {"aot":true,"outputPath":"dist/TestApp","index":"src/index.html","main":"src/main.ts","polyfills":"src/polyfills.ts","tsConfig":"src/tsconfig.app.json","assets": ["src/favicon.ico","src/assets"],"styles": [{"input":"node_modules/@progress/kendo-theme-default/dist/all.css"},"src/styles.css"],"scripts": []},"configurations": {"production": {"fileReplacements": [{"replace":"src/environments/environment.ts","with":"src/environments/environment.prod.ts"}],"optimization":true,"outputHashing":"all","sourceMap":false,"extractCss":true,"namedChunks":false,"aot":true,"extractLicenses":true,"vendorChunk":false,"buildOptimizer":true}}},"serve": {"builder":"@angular-devkit/build-angular:dev-server","options": {"browserTarget":"TestApp:build"},"configurations": {"production": {"browserTarget":"TestApp:build:production"}}},"extract-i18n": {"builder":"@angular-devkit/build-angular:extract-i18n","options": {"browserTarget":"TestApp:build"}},"test": {"builder":"@angular-devkit/build-angular:karma","options": {"main":"src/test.ts","polyfills":"src/polyfills.ts","tsConfig":"src/tsconfig.spec.json","karmaConfig":"src/karma.conf.js","styles": [{"input":"node_modules/@progress/kendo-theme-default/dist/all.css"},"src/styles.css"],"scripts": [],"assets": ["src/favicon.ico","src/assets"]}},"lint": {"builder":"@angular-devkit/build-angular:tslint","options": {"tsConfig": ["src/tsconfig.app.json","src/tsconfig.spec.json"],"exclude": ["**/node_modules/**"]}}}},"TestApp-e2e": {"root":"e2e/","projectType":"application","architect": {"e2e": {"builder":"@angular-devkit/build-angular:protractor","options": {"protractorConfig":"e2e/protractor.conf.js","devServerTarget":"TestApp:serve"},"configurations": {"production": {"devServerTarget":"TestApp:serve:production"}}},"lint": {"builder":"@angular-devkit/build-angular:tslint","options": {"tsConfig":"e2e/tsconfig.e2e.json","exclude": ["**/node_modules/**"]}}}}},"defaultProject":"TestApp"} - run: ng serve
- let the build complete, open the app to verify that it is working
- modify the component with the Kendo grid and save the file
- observe that the build fails