Typescript: bug? tsc is looking in node_modules dir even though it's excluded + "cannot find name Promise"

Created on 10 Jan 2017  路  14Comments  路  Source: microsoft/TypeScript

TypeScript Version: 2.1.4

Code

Please see my code and config; the config is clear below and all I did to generate the errors was run

$ tsc # at the command line

screenshot from 2017-01-10 01-01-28

Expected behavior:

Expect the tsc command to work given the tsconfig.json file

Actual behavior:

I get these weird errors:

oleg@xps:~/WebstormProjects/oresoftware/observable-persistent-queue$ tsc
node_modules/rxjs/Observable.d.ts(68,60): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/Observable.d.ts(68,70): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/observable/PromiseObservable.d.ts(40,31): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/observable/PromiseObservable.d.ts(41,26): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(2,60): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(3,79): error TS2304: Cannot find name 'Promise'.
node_modules/rxjs/operator/toPromise.d.ts(3,89): error TS2304: Cannot find name 'Promise'.

Any idea why that's happening or what it's about? Seems like a bug or multiple bugs? As you can see node_modules is excluded by the config, so not sure why tsc is looking in that dir; even then, not sure why the Promise error is coming about.

Most helpful comment

"lib":["es2015", "dom"] :)
It is a mix and match smorgasbord

All 14 comments

image

image

Looking at those I don't think any of them have to do with this issue? But maybe I am wrong.

the last one in the first image might be a lead

Sorry I did not mean to be rude but at least half of them could be relevant. Please see this as well https://www.typescriptlang.org/docs/handbook/tsconfig-json.html

no problem, I went through some and they didn't seem to be the same

Looking at what you posted more closely, you are missing "lib": ["es2015"] which you need in order to use Promises when targeting es5, unless you use third party typings promise typings.

@ORESoftware Did setting lib help?

ah let me try it, thanks!

that did do something, but now I get this (all I changed was adding "lib":["es2015"] to my tsconfig.json file.)

oleg@xps:~/WebstormProjects/oresoftware/observable-persistent-queue$ ./build.sh 
node_modules/rxjs/observable/FromEventObservable.d.ts(11,39): error TS2304: Cannot find name 'EventTarget'.
node_modules/rxjs/observable/FromEventObservable.d.ts(11,104): error TS2304: Cannot find name 'NodeList'.
node_modules/rxjs/observable/FromEventObservable.d.ts(11,115): error TS2304: Cannot find name 'HTMLCollection'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(16,23): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(75,59): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(80,13): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(95,20): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(96,10): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(106,32): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(106,44): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(117,10): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(122,39): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/AjaxObservable.d.ts(130,22): error TS2304: Cannot find name 'XMLHttpRequest'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(10,29): error TS2304: Cannot find name 'MessageEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(11,33): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(12,34): error TS2304: Cannot find name 'CloseEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(15,63): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(26,13): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(27,32): error TS2304: Cannot find name 'Event'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(28,33): error TS2304: Cannot find name 'CloseEvent'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(31,63): error TS2304: Cannot find name 'WebSocket'.
node_modules/rxjs/observable/dom/WebSocketSubject.d.ts(34,23): error TS2304: Cannot find name 'MessageEvent'.

"lib":["es2015", "dom"] :)
It is a mix and match smorgasbord

huh, ok :) but I wonder why tsc is looking to resolve this, I would think that it would ignore this stuff because it's in node_modules...?

Because, you need to reference types from within node_modules (so you can get access to their stronly typed APIs and take advantage of TypeScript's tooling), and these in turn reference other types, which reference other types...

yeah, it sort of makes sense. my code is calling RxJS which is in node_modules and it needs some type info from there I guess, even though no source files inside node_modules will be transpiled...

thanks for your help, it seems to have solved my problem will close!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

jbondc picture jbondc  路  3Comments

kyasbal-1994 picture kyasbal-1994  路  3Comments

blendsdk picture blendsdk  路  3Comments

dlaberge picture dlaberge  路  3Comments

seanzer picture seanzer  路  3Comments