angular / angular-cli

CLI tool for Angular
https://cli.angular.dev
MIT License
26.79k stars 11.98k forks source link

Angular 5: NPM Link - model/index.ts is not part of the compilation. #8284

Closed thaoula closed 5 years ago

thaoula commented 7 years ago

Bug Report or Feature Request (mark with an x)

- [x] bug report -> please search issues before submitting
- [ ] feature request

Versions.

Angular CLI: 1.5.0 Node: 8.7.0 OS: darwin x64 Angular: 5.0.0

Repro steps.

We have a the following folder structure in a git mono-repo

/api (Express Node App) /model (NPM package using NPM Link, contains mostly typescript interfaces) /web (Angular)

When using Angular 4.46 and Angular CLI 1.5.rc2 and we were able to make reference to the interfaces defined in the model folder using npm link and using the following example import { entity } @app/model

We use ng serve to start the app.

After upgrading Angular to V5 and Angular CLI to 1.5.0 we now get the following error -

The log given by the failure.

Module build failed: Error: /Users/thaoula/Projects/platform/model/index.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.

The occurs for JIT and AOT builds. Running TSC does not result in in errors.

Desired functionality.

Would like be able to build the app using Angular 5

Thanks, Tarek

rolaveric commented 7 years ago

I can report a similar issue. Key differences:

  1. I'm not using npm link, I've just installed another git repo via npm with typescript source (ie. original .ts files).
  2. The error I'm getting is: node_modules/other-repo/src/lib/index.ts is not part of the compilation output. Please check the other error messages for details.

Was previously working fine with Angular 4.4.6 and Angular CLI 1.4.7

I'll try to create a minimal repo to reproduce the issue once I get home.

suresh2018 commented 7 years ago

yes i m also faced this issue . angular 5 rc 9 and clic 1.5.0

xiongyayun428 commented 7 years ago

me too

ChristianSchroedel commented 7 years ago

Same here - without npm link, but with dependencies on typescript libraries in other git repositories

diagramatics commented 7 years ago

I've been testing with several version combinations to flush this out and it seems like it's the CLI causing it. I'm running v1.5.0 with Angular on v5.0.0 final and a similar error shows. Rolling the CLI back to rc8 fixes it.

Then I reverted https://github.com/angular/angular-cli/commit/9b43a9c30420a6fae10de32af90d27c1c0c4d87b manually and the error subsides.

rolaveric commented 7 years ago

I've found that I only get the problem with ng serve - not with ng build. Specifically: ng build --aot --prod --sourcemaps --stats-json --delete-output-path=false --progress=false

rolaveric commented 7 years ago

I can confirm what @diagramatics said about rolling back to rc8 working, but I didn't get the same joy from reverting 9b43a9c I also noticed that I get the same error when running ng test (ie. X is not part of the compilation output.) - even with rc8.

filipesilva commented 7 years ago

Hey all, this is a side effect of the stricter tsconfig as described in https://blog.angular.io/version-5-0-0-of-angular-now-available-37e414935ced#148d.

The tsconfig file is what determines what TS files are compiled. The error you are getting means that the files mentioned are NOT being compiled.

Before we used to compile all files, essentially ignoring what tsconfig listed. This was a bug, because if you don't include a file in the compilation then it should not be compiled.

By default ./src/tsconfig.app.json will only pick up files inside src/. If you have a file outside source, it won't be picked up. But you can add more files to the tsconfig via either files or include.

So for @thaoula's case, you probably want to add this the files in ../models to your tsconfig.app.json and also to your tsconfig.spec.json:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    // ...
  },
  "include": [
    "../models/**/*.ts"
  ],
  "exclude": [
    // ...
  ],
}

You can read more about tsconfig files in https://github.com/Microsoft/TypeScript-Handbook/blob/master/pages/tsconfig.json.md.

@rolaveric's case is slightly different. You have TS files in your node_modules. This really goes against how libraries should be packaged: libraries should never ship their source .ts files.

The reason for this rule is that the TypeScript version your app isn't necessarily the same as the TS version your library uses. Different versions of TS can produce different output, and give different errors for the same input. They don't even support the same language features. So packaging libraries with TS sources will always break someone's project.

So we don't really support using incorrectly packaged libraries with TS sources. It's something you do at your risk.

That being said, maybe you can try adding it to the include array. But I can't guarantee that will work in the future because it's still an incorrectly packaged library.

Regarding AOT: as far as I can tell, AOT is still incorrectly compiling TS that is not included in the tsconfig. I'll bring this up with the compiler team. (Edit: reported as https://github.com/angular/angular/issues/20115)

MakesNine commented 7 years ago

We have the same problem described by @thaoula , but for a file that is located inside the normal tree structure created by the angular-cli. The error occurs with angular 5.0.0 final and angular-cli 1.5. We can "ng serve" the app with angular 5.0.0 and angular-cli 1.4.4.

The file that is not part of the compilation in our project is located at: src/app/core/stateManagement/Models/genericCourse.ts

We never included or excluded files using tsconfig.json so it doesn't seem that the problem comes from the stricker tsconfig usage describeb above. To make sure, I created an empty project using angular-cli 1.5.0 and replaced the tsconfig.json and tsconfig.app.json files in our project with the ones created by the new cli and it didn't solve the problem.

Another thing we have in commun with @thaoula is that the file that is not included in the compilation only contains interface and class definitions. So there might be something with that.

filipesilva commented 7 years ago

@MakesNine that sounds like a different issue altogether, and one that we thought was fixed. Could you give me a repro of that please?

KevinFernandes commented 7 years ago

We are having a similar issue, as well, after upgrading. It is complaining about all of our library packages under node_modules with this same exact error (all packages are installed with NPM so no links). Are we going to have to "include" each package separately in the tsconfig file? This would be a nightmare if its true, now and for maintenance in the future. Is there another solution or something else we can do first before using this new version which obviously breaks us completely?

MakesNine commented 7 years ago

@filipesilva I have been trying to reproduce the problem in a small project, but I haven't succeded so far. I will keep trying to isolate the problem to find the source of it.

Here's the exact error I'm getting:

ERROR in ./src/app/core/StateManagement/models/genericCourse.models.ts Module build failed: Error: D:\Projects\LtiisWeb\src\app\core\StateManagement\models\genericCourse.models.ts is not part o f the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property. at AngularCompilerPlugin.getCompiledFile (D:\Projects\LtiisWeb\node_modules\@ngtools\webpack\src\angular_compiler_plug in.js:624:23) at plugin.done.then (D:\Projects\LtiisWeb\node_modules\@ngtools\webpack\src\loader.js:467:39) @ ./src/app/+generic-courses/generic-course.component.ts 23:0-84 @ ./src/app/+generic-courses/generic-courses.module.ts @ ./src/$$_lazy_route_resource lazy @ ./node_modules/@angular/core/esm5/core.js @ ./src/main.ts @ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts

filipesilva commented 7 years ago

@MakesNine so if you try having a file with just interfaces it's still fine in a new project? Hm... I've heard of problems with casing. Are your imports perhaps using the wrong casing? Does it still happen if you add a non-interface export to that file? That seems to be a lazy route, perhaps it's related. Can you try making that route not lazy?

@KevinFernandes this definitely shouldn't happen to all library packages, unless somehow you're just using packages that weren't packaged well. Can you give me examples of a couple of these packages? I can have a look.

MakesNine commented 7 years ago

@filipesilva yest, I can build a new project and import a file with only interfaces from a lazy loaded module. I will double check the casing and try the original app with a non lazy route for the module where the error originates.

MakesNine commented 7 years ago

@filipesilva I have added an import and exported a function from the file refusing to be part of the compilation and it didn't help. I have changed all the routes, in app-routing.module.ts, that have components importing type definitions from that file so that they wouldn't be lazy loaded and the app compiled, but didn't work. I had forgotten to import the modules, in app.module.ts', that contained the components now used in the non lazy loaded routes. Once I add the required imports in app.module.ts, I get the same problem that I get with lazy loaded routes. I have also checked casing and all seems ok on that front.

rolaveric commented 7 years ago

Thanks @filipesilva - that explains my issue. I tried explicitly including my internal libraries using include, but that's giving me other grief (picking up on test suites, despite using exclude). So I'll do it properly and have them expose compiled code. I knew it was something I should do, but with them only being used internally by the company, I let it slide.

Thanks again to you and all the contributors for your hard work on Angular CLI - it's an excellent tool and very much appreciated.

stuartwk commented 7 years ago

I was having the same issue after updating. Like some other people, the ts files were all part of the standard CLI structure tree. Turned out it was a case sensitivity issue for me. I had accidentally written something like...

import { Comment } from './Comment' while in other components import { Comment } from './comment'. Running a normal build would throw me a helpful warning before erroring out, but building for prod only showed me the "Please make sure it is in your tsconfig via the 'files' or 'include' property" error. Fixed the casing issue and prod builds for me fine.

MakesNine commented 7 years ago

I finally got my app to compile. It turned out that it was a casing issue indeed. The error I was getting was: ERROR in ./src/app/core/StateManagement/models/genericCourse.models.ts

And the solution is to change the related import to: ./src/app/core/stateManagement/models/genericCourse.models.ts

Curiously, I have other files in that folder that were also imported with StateMangement in the path and the compiler didn't complain.

Thansk for your input @filipesilva

prasadkadiyala commented 7 years ago

We got the same problem when importing the modules.

filipesilva commented 7 years ago

@MakesNine that is weird indeed, and I'm not really sure why that happens... I expected all bad paths to throw an error somehow. Will keep an eye out for more such casing reports.

KevinFernandes commented 7 years ago

@filipesilva I see hundreds of errors so its hard to sort through them. From what I can see at the moment it's all of "my" library packages, packages that we build and publish to a local repository. We package all of the .ts files as well as a webpacked bundle file.

When we were building with SystemJS it made sense that we had to explicitly specify all of the bundles to include from node_modules, but with the CLI it seemed to just work without any extra specifications. It made our lives a thousand times easier. But now it seems what we thought was a feature was actually a bug in CLI and possibly something that we are doing wrong (and have been for more than a year now).

So what exactly is the problem? Is it that the CLI was compiling the .ts files that we had in our library packages and so did not need the bundles? If that is the case then how do we now tell the CLI to use the bundle? Is it something to do differently when packaging the library bundles or is it some angular-cli.json configuration we have to change.

Sorry, up until now we had though we had finally figured out this JavaScript eco system, but now it seems we still have some things to learn.

filipesilva commented 7 years ago

@KevinFernandes ok so that it happens on your local libs makes sense considering the other reports in this issue. Yes, before it seems like the CLI was compiling the TS in your local libraries, which was just a ticking time bomb really.

The way to address this in your codebase really depends on how you build your libs... Do you use an existing library to do it? I think a lot of users use https://github.com/dherges/ng-packagr and seem to be happy with it. I haven't myself though.

emazv72 commented 7 years ago

I can report a similar issue:

I have a standard, cli generated, folder structure ( Windows platform ) I simply share some modules between different applications at the source level.

Under src there are the following folders:

Under packages:

Each folder is a module ( proper module.ts ) and has an index.ts for the exports.

tsconfig.json looks like this:

"compilerOptions": {
    "baseUrl": "src",
    "paths": {
      "@combo-components/core": [
        "packages/combo-components/src"
      ],
      "@catol/core": [
        "packages/catol-core/src"
      ]
    }

An import statement looks like this: import { DataSourceResult, NotificationService } from '@combo-components/core';

It worked fine till angular 4.x and cli 1.4.x After upgrading to 5.0 & cli 1.5.0, ng build fails with the following error:

ERROR in ../catol/combo-components/src/index.ts Module build failed: Error: C:\Users...\workspace\catol\combo-components\src\index.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property. at AngularCompilerPlugin.getCompiledFile (C:\Users...\workspace\playground\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:624:23) at plugin.done.then (C:\Users...\workspace\playground\node_modules\@ngtools\webpack\src\loader.js:467:39) @ ./src/app/app.module.ts 13:0-63 @ ./src/main.ts @ multi ./src/main.ts

Casing checked, also added the include property suggested by @filipesilva

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    // ...
  },
  "include": [
    "./packages/**/*.ts"
  ],
  "exclude": [
    // ...
  ],
}

The error changes slightly:

ERROR in ./src/main.ts Module build failed: Error: C:\Users...\workspace\playground\src\main.ts is not part of the compilation output. Please check the other error messages for details. at AngularCompilerPlugin.getCompiledFile (C:\Users...\workspace\playground\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:629:23) at plugin.done.then (C:\Users...\workspace\playground\node_modules\@ngtools\webpack\src\loader.js:467:39) at process._tickCallback (internal/process/next_tick.js:109:7) @ multi ./src/main.ts ERROR in ./src/polyfills.ts ...

Adding main&polyfill to the include path doesn't help either.

zhekaus commented 7 years ago

The same issue with fresh-created app using ng new Angular CLI: 1.5.0 Node: 6.10.3 OS: win32 x64 Angular: 5.0.0

scottieslg commented 7 years ago

I was having this issue and it was a case issue.

I was trying to do this:

import { IJobModel, JobModel } from "./jobModels/job.model";

which should be

import { IJobModel, JobModel } from "./JobModels/job.model";

(./jobModels was camel cased instead of upper case)

sandangel commented 7 years ago

have you tried with --preserve-symlinks flag? https://github.com/angular/angular/issues/20091

emazv72 commented 7 years ago

@sandangel Thank you that worked for me, no need to add the 'include' property in tsconfig.json

After upgrade, either run

ng serve --preserve-symlinks

or update .angular-cli.json

...
 "defaults": {
    "styleExt": "css",
    "component": {},
    "build": {
      "preserveSymlinks": true
    }

if you have symlinks in the source tree.

ag-susini commented 7 years ago

I'm using a 3rd party library from Google called api-ai-javascript which is installed in the node_modules folder, using ng serve --preserve-symlinks does not work and neither does updating my angular-cli.json file, I have to explicitly update my tsconfig file with include in order to overcome the following error

Module build failed: Error: C:\Users\Development\Documents\Projects\proj\node_modules\api-ai-javascript\index.ts is not part of the compilation output. Please check the other error messages for details. 
 at AngularCompilerPlugin.getCompiledFile (C:\Users\Development\Documents\Projects\proj\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:629:23)
    at plugin.done.then (C:\Users\Development\Documents\Projects\proj\node_modules\@ngtools\webpack\src\loader.js:467:39)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
 @ ./src/app/services/bot/bot.service.ts 12:0-48
 @ ./src/app/components/common/app-common.module.ts
 @ ./src/app/app.module.ts
 @ ./src/main.ts
 @ multi ./src/main.ts

Only after updating to Angular 5.0.0 and Angular-cli 1.5.0 did the issue start occurring.

SamD commented 7 years ago

I'm also seeing the issue after upgrading to Angular 5 and cli 1.5.0 with a third-party logger module that had no issues previously.

Tried suggested methods posted here still the same error.

ERROR in ./node_modules/angular2-logger/app/core/level.ts Module build failed: Error: node_modules/angular2-logger/app/core/level.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.

MrVintage710 commented 7 years ago

I am have the same error, although mine came about after I imported the 'Input' class from '@angular/core'.

import {Component, OnInit, ViewEncapsulation, Input} from '@angular/core';

After I used the @Input() on the variable hero: Hero it breaks. If I don't type hero like @Input() hero it is fine, but as soon as I add : Hero; it breaks.

michaelwaihenya commented 7 years ago

@scottieslg pointed me in the right direction. (Typo in path casing). Additionally I had several backticks (`) in my compoments that were compiling before. single quotes (') resolved the issue.

little-boy commented 7 years ago

I encountered the problem with a project having a Symfony like architecture.

Meaning there is : ./tsconfig.json ./src/tsconfig.app.json ./src/SomeFolder/app/*.ts...

There are dependencies between each bundles.

One of the dependencies was thrown in "...is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property"

I solved the problem by including every ts files as suggested by @filipesilva but in a different order.

=> Bundle B needed by Bundle A & C so tsconfig.app.json like : { "include": [ "pathToBundleB/**/*.ts", "pathToBundleA/**/*.ts", "pathToBundleC/**/*.ts", ] } instead of : { "include": [ "pathToBundleA/**/*.ts", "pathToBundleB/**/*.ts", "pathToBundleC/**/*.ts", ] }

That's kinda weird. Looks like @ngtools/webpack/src/angular_compiler_plugin.js:624:23), the function this._compilerHost.fileExists is looking for bundles loaded before, and not after..

matt-psaltis commented 7 years ago

I'm getting this error for files that are referenced in our app.module.ts. Its almost like this file is treated differently in some way because its the module referenced in the AngularCompilerPlugin options??? I've tried manually adding the module to the tsconfig files section but that hasn't resolved it.

sbkpilot1 commented 7 years ago

We are having the same issue. We have a private repo where we have published a library that we use. We have this lib as a dependency in our client, when compiling in Angular 5 we get the following error but ONLY in JIT mode, if we use a ng serve --aot or ng build --aot or --prod it works fine. Not sure what is the issue here. We are using Angular 5.0.1 with CLI 1.5.0

We tried using includes in tsconfig, while that solves this issue it generates another different error that my json module declarations are not found which is specified in typings.d.ts (with a declare module "*.json").

ERROR in ./node_modules/@myscope/services-lib/index.ts
Module build failed: Error: 
[path]\node_modules\@myscope\services-lib\index.ts is not part of the compilation output. 
Please check the other error messages for details.
    at AngularCompilerPlugin.getCompiledFile ([path]\node_modules\@ngtools\webpack\src\angular_compiler_plugin.js:629:23)
rolaveric commented 7 years ago

I've managed to resolve the issue I was having by, as per @filipesilva's advice, compiling the TS code from my library and configuring it so my downstream projects could consume it. I did have a lot of trouble with this though, so I want to share some details in the hope they'll help others with the same frustrations.

Most of the documentation and discussion available frames these repos we're installing via npm as "libraries" in the open source sense of the term: The code is on github, the artifacts are published to npm, and they must be built for general consumption (ie. accounting for different projects with different ES targets). My situation (which is not unique, from the sound of things) is different in that my "library" is for internal company use only. To help separate this use case from the "open source library" scenario, I'm going to call what I've got a "shared codebase".

Your starting point should be @filipesilva's angular-quickstart-lib repo. If, like me, you've got a "shared codebase" then you don't need everything from here. The key things you need are:

  1. To inline resources before you compile them (ie. templateUrl becomes template)
  2. To compile the TS code using ngc, with appropriate tsconfig.json settings
  3. To add module and typings properties to your package.json, pointing at the index.js and index.d.ts of your compiled code.

What you don't need is bundling (Just use the raw *.js files), and you probably only need a single compile target (ES5 or ES2015). So you can strip down a lot of the build.js file (removing the need for a fair few extra npm dependencies) and ignore references to flatModule in the tsconfig.lib.json.

I hope that helps.

jacinto-joao commented 7 years ago

This really stressful!

Myself and my team, we have put all energy believing and trusting Angular, that's this time things will be different not like from angularJs to angular 2.

And we could jump a long time from angularJs to ReactJs or Aurelia or maybe VueJs, but the love and trust we had it keeps as loving Angular and believing that we won't have same stress like we had from angularJs to angular 2.

Now we already with big projects out there, using third-party open source libraries, which till angular 4.3, everything was fine.

But now in angular 5 with the CLI 1.5, we were expecting the upgrade to be smooth and not having this kind of issue. So now we're stuck and hoping that the creators of the libraries they update the package.

And the questions come again, should we keep believing that angular will have the success like angularJs had on the past, or now is time to move on trying something different because this is a nightmare, and each version got different stories, and we must signup new courses to learn over.

I'm sorry for my comments, but this how it feels like.

image

deebloo commented 7 years ago

@jjoao07 Sorry you are having trouble. The issue isn't an angular issue it is a typescript issue. To solve it for linked libraries that have typescript shipped in them you can add that to your tsconfig "includes" property. So if you have a folder in your node modules called "my-lib" you can add. The typescript compiler by default does not see the typescript code in node_modules by default (and it shouldn't). I hope this helps.

this is the same as mentioned by @filipesilva and @little-boy

{
    "includes": ["node_modules/my-lib"]
}
sbkpilot1 commented 7 years ago

@deebloo if the Typescript compiler shouldn't be looking at ts code in the node modules then perhaps adding an includes is not the best solution for this? Should we be packaging our libraries differently?

deebloo commented 7 years ago

@sbkpilot1 overall yes. if you are publishing a module you should only be distributing javascript and the generated type definitions. The solution I mentioned is only a workaround

akkumar commented 7 years ago

Adding the following to .npmignore (in addition to 'includ'ing in tsconfig.json, of course) fixes it for me.

# Ignored files
*.ts
!*.d.ts
malaba03 commented 7 years ago

hello guys, I had the same issue in my project (Angular 5.0.0). I solved it by deleting the file which causes the problem. After i created it again and pasting the same code step by step in order to make sure what part of the code cause the problem. Now everything work. Hope my solution will help you.

@malaba

JulienBourgain commented 7 years ago

@filipesilva I understand your arguments, but why release a breaking change in a minor version ?!

It's better to add a warning in this version and correct this behaviour in 2.0.0

criollapp commented 7 years ago

If you are working with multiple libraries with npm link under a scope and you have something like the following in your tsconfig:

"paths": { "@my-libs/*": ["../node_modules/@my-libs/*"] }

The error will be present. Remove it

Jesu26 commented 7 years ago

Hi , I am also facing the same problem.

while compiling the solution via ng serve -o after angular 5 update this issue occurs.

i have used npm link to link all my modules.

ERROR in ./platform/userModule/app/app.module.ts Module build failed: Error: E:\temp\trunk\platform\userModule\app\app.module.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property. at AngularCompilerPlugin.getCompiledFile (E:\temp\trunk\node_modules@ngtools\webpack\src\angular_compiler_plugin.js:624:23) at plugin.done.then (E:\temp\trunk\node_modules@ngtools\webpack\src\loader.js:467:39) at @ ./src/$$_lazy_route_resource lazy @ ./node_modules/@angular/core/esm5/core.js @ ./src/main.ts @ multi ./src/main.ts

usernameisMan commented 7 years ago

i also met the question ,

ERROR in ./src/app/hero.ts Module build failed: Error: F:\lenleeWorkProject\angular\angular-tour-of-heroes\src\app\hero.ts is not part o f the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property. at AngularCompilerPlugin.getCompiledFile (F:\lenleeWorkProject\angular\angular-tour-of-heroes\node_module s\@ngtools\webpack\src\angular_compiler_plugin.js:624:23) at plugin.done.then (F:\lenleeWorkProject\angular\angular-tour-of-heroes\node_modules\@ngtools\webpack\sr c\loader.js:467:39) at @ ./src/app/hero-detail/hero-detail.component.ts 11:0-31 @ ./src/app/app.module.ts @ ./src/main.ts @ multi webpack-dev-server/client?http://0.0.0.0:0 ./src/main.ts

============================ i am check all the hero.ts reference, The discovery problem appears on the file path
is Uppercase the Hero Instead of hero 。

so why path error not prompting?

Instead, it returns to normal after manually triggering the save

Angular CLI: 1.5.0 Node: 8.4.0 OS: win32 x64 Angular: 5.0.1 ... animations, common, compiler, compiler-cli, core, forms ... http, language-service, platform-browser ... platform-browser-dynamic, router

@angular / cli: 1.5.0 @angular-devkit / build-optimizer: 0.0.33 @angular-devkit / core: 0.0.20 @angular-devkit / schematics: 0.0.35 @ngtools / json-schema: 1.1.0 @ngtools / webpack: 1.8.0 @schematics / angular: 0.1.3 typescript : 2.4.2 webpack : 3.8.1

bzah commented 7 years ago

Hello, I came across the same issue using angular 5.0.1 and CLI 1.5 :

Module build failed: Error: xxx\ng4-blog-frontend\src\app\models\post.ts is not part of the compilation. Please make sure it is in your tsconfig via the 'files' or 'include' property.

At first I had a case issue that I solved and it worked fine for a while but the error came back somehow later. I tried what @sandangel suggested by using the flag --preserve-symlinks but it did not worked.

Finally, I found another issue (#20091) where @stephanecot suggested the use of --aot and it works fine, although I have no idea why... As the flag suggests, it use the Ahead of time compilation which can be unwanted.

I hope it will help someone.

khalid-halo commented 7 years ago

Tried workarounds mentioned in this thread, dosen't seem to help. Still getting the same error.

ERROR in ./node_modules/angular2-isotope/index.ts

How can I compile the library locally to continue development for the time being?

misaizdaleka commented 7 years ago

What I did with my library is I moved it to the src folder and included it from there. Not a clean solution, but it'll work until the Angular guys figure this one out.

nueko commented 7 years ago

FOR ME, The issue comes up when the project stands on a junction directory or symlink.

rychkog commented 7 years ago

I have same symptoms like @nueko has. When one of my dependencies is linked via symlink and I invoke ng build --prod --build-optimizer - then it fails. --preserve-symlinks helps to fix this particular case: ng build --prod --build-optimizer --preserve-symlinks