Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NestJs Errors stemming from @types dependencies in node_modules when running start:prod on fresh project

Tags:

angular

nestjs

My aim is to run a nestjs app that serves up an Angular front end. I've got an Angular cli scaffolded app at the root of the project (built using the @angular/cli latest v8 beta). Inside this folder I used the nestjs cli to scaffold a new nestjs app (app name is server).

I then cd into server and run npm run start:prod and get the following errors:


../node_modules/@types/jasmine/ts3.1/index.d.ts:15:1 - error TS6200: Definitions of the following identifiers conflict with those in another file: describe, fdescribe, xdescribe, it, fit, xit, beforeEach, afterEach, beforeAll, afterAll, expect, CustomEqualityTester,
CustomMatcherFactory, DEFAULT_TIMEOUT_INTERVAL

15 type ImplementationCallback = (() => Promise<any>) | ((done: DoneFn) => void);
   ~~~~

  node_modules/@types/jest/index.d.ts:24:1
    24 declare var beforeAll: jest.Lifecycle;
       ~~~~~~~
    Conflicts are in this file.

../node_modules/@types/jasmine/ts3.1/index.d.ts:235:9 - error TS2375: Duplicate number index signature.

235         [n: number]: T;
            ~~~~~~~~~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:238:15 - error TS2428: All declarations of 'ArrayContaining' must have identical type parameters.

238     interface ArrayContaining<T> {
                  ~~~~~~~~~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:245:15 - error TS2428: All declarations of 'ObjectContaining' must have identical type parameters.

245     interface ObjectContaining<T> {
                  ~~~~~~~~~~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:287:9 - error TS2374: Duplicate string index signature.

287         [index: string]: CustomMatcherFactory;
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:292:9 - error TS2687: All declarations of 'message' must have identical modifiers.

292         message?: string;
            ~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:292:9 - error TS2717: Subsequent property declarations must have the same type.  Property 'message' must be of type 'string | (() => string)', but here has type 'string'.

292         message?: string;
            ~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:718:15 - error TS2428: All declarations of 'SpyAnd' must have identical type parameters.

718     interface SpyAnd<Fun extends InferableFunction> {
                  ~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:735:15 - error TS2428: All declarations of 'Calls' must have identical type parameters.

735     interface Calls<Fun extends InferableFunction> {
                  ~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:754:15 - error TS2428: All declarations of 'CallInfo' must have identical type parameters.

754     interface CallInfo<Fun extends InferableFunction> {
                  ~~~~~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:758:9 - error TS2717: Subsequent property declarations must have the same type.  Property 'args' must be of type 'any[]', but here has type 'Parameters<Fun>'.

758         args: Parameters<Fun>;
            ~~~~

../node_modules/@types/jasmine/ts3.1/index.d.ts:760:9 - error TS2717: Subsequent property declarations must have the same type.  Property 'returnValue' must be of type 'any', but here has type 'ReturnType<Fun>'.

760         returnValue: ReturnType<Fun>;
            ~~~~~~~~~~~

../node_modules/@types/jasminewd2/index.d.ts:10:18 - error TS2300: Duplicate identifier 'it'.

10 declare function it(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~

  node_modules/@types/jest/index.d.ts:31:13
    31 declare var it: jest.It;
                   ~~
    'it' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:11:18 - error TS2300: Duplicate identifier 'fit'.

11 declare function fit(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~

  node_modules/@types/jest/index.d.ts:32:13
    32 declare var fit: jest.It;
                   ~~~
    'fit' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:12:18 - error TS2300: Duplicate identifier 'xit'.

12 declare function xit(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~

  node_modules/@types/jest/index.d.ts:33:13
    33 declare var xit: jest.It;
                   ~~~
    'xit' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:13:18 - error TS2300: Duplicate identifier 'beforeEach'.

13 declare function beforeEach(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~~~~~~~~

  node_modules/@types/jest/index.d.ts:25:13
    25 declare var beforeEach: jest.Lifecycle;
                   ~~~~~~~~~~
    'beforeEach' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:14:18 - error TS2300: Duplicate identifier 'afterEach'.

14 declare function afterEach(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~~~~~~~

  node_modules/@types/jest/index.d.ts:27:13
    27 declare var afterEach: jest.Lifecycle;
                   ~~~~~~~~~
    'afterEach' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:15:18 - error TS2300: Duplicate identifier 'beforeAll'.

15 declare function beforeAll(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~~~~~~~

  node_modules/@types/jest/index.d.ts:24:13
    24 declare var beforeAll: jest.Lifecycle;
                   ~~~~~~~~~
    'beforeAll' was also declared here.

../node_modules/@types/jasminewd2/index.d.ts:16:18 - error TS2300: Duplicate identifier 'afterAll'.

16 declare function afterAll(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                    ~~~~~~~~

  node_modules/@types/jest/index.d.ts:26:13
    26 declare var afterAll: jest.Lifecycle;
                   ~~~~~~~~
    'afterAll' was also declared here.

node_modules/@types/jest/index.d.ts:24:1 - error TS6200: Definitions of the following identifiers conflict with those in another file: describe, fdescribe, xdescribe, it, fit, xit, beforeEach, afterEach, beforeAll, afterAll, expect, CustomEqualityTester, CustomMatcherFactory, DEFAULT_TIMEOUT_INTERVAL

24 declare var beforeAll: jest.Lifecycle;
   ~~~~~~~

  ../node_modules/@types/jasmine/ts3.1/index.d.ts:15:1
    15 type ImplementationCallback = (() => Promise<any>) | ((done: DoneFn) => void);
       ~~~~
    Conflicts are in this file.

node_modules/@types/jest/index.d.ts:24:13 - error TS2300: Duplicate identifier 'beforeAll'.

24 declare var beforeAll: jest.Lifecycle;
               ~~~~~~~~~

  ../node_modules/@types/jasminewd2/index.d.ts:15:18
    15 declare function beforeAll(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~~~~~~~
    'beforeAll' was also declared here.

node_modules/@types/jest/index.d.ts:25:13 - error TS2300: Duplicate identifier 'beforeEach'.

25 declare var beforeEach: jest.Lifecycle;
               ~~~~~~~~~~

  ../node_modules/@types/jasminewd2/index.d.ts:13:18
    13 declare function beforeEach(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~~~~~~~~
    'beforeEach' was also declared here.

node_modules/@types/jest/index.d.ts:26:13 - error TS2300: Duplicate identifier 'afterAll'.

26 declare var afterAll: jest.Lifecycle;
               ~~~~~~~~

  ../node_modules/@types/jasminewd2/index.d.ts:16:18
    16 declare function afterAll(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~~~~~~
    'afterAll' was also declared here.

node_modules/@types/jest/index.d.ts:27:13 - error TS2300: Duplicate identifier 'afterEach'.

27 declare var afterEach: jest.Lifecycle;
               ~~~~~~~~~

  ../node_modules/@types/jasminewd2/index.d.ts:14:18
    14 declare function afterEach(action: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~~~~~~~
    'afterEach' was also declared here.

node_modules/@types/jest/index.d.ts:31:13 - error TS2300: Duplicate identifier 'it'.

31 declare var it: jest.It;
               ~~

  ../node_modules/@types/jasminewd2/index.d.ts:10:18
    10 declare function it(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~
    'it' was also declared here.

node_modules/@types/jest/index.d.ts:32:13 - error TS2300: Duplicate identifier 'fit'.

32 declare var fit: jest.It;
               ~~~

  ../node_modules/@types/jasminewd2/index.d.ts:11:18
    11 declare function fit(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~
    'fit' was also declared here.

node_modules/@types/jest/index.d.ts:33:13 - error TS2300: Duplicate identifier 'xit'.

33 declare var xit: jest.It;
               ~~~

  ../node_modules/@types/jasminewd2/index.d.ts:12:18
    12 declare function xit(expectation: string, assertion?: (done: DoneFn) => Promise<void>, timeout?: number): void;
                        ~~~
    'xit' was also declared here.

node_modules/@types/jest/index.d.ts:1009:46 - error TS2314: Generic type 'ArrayContaining<T>' requires 1 type argument(s).

1009     function arrayContaining(sample: any[]): ArrayContaining;
                                                  ~~~~~~~~~~~~~~~

node_modules/@types/jest/index.d.ts:1010:45 - error TS2314: Generic type 'ObjectContaining<T>' requires 1 type argument(s).

1010     function objectContaining(sample: any): ObjectContaining;
                                                 ~~~~~~~~~~~~~~~~

node_modules/@types/jest/index.d.ts:1036:15 - error TS2428: All declarations of 'ArrayContaining' must have identical type parameters.

1036     interface ArrayContaining {
                   ~~~~~~~~~~~~~~~

node_modules/@types/jest/index.d.ts:1042:15 - error TS2428: All declarations of 'ObjectContaining' must have identical type parameters.

1042     interface ObjectContaining {
                   ~~~~~~~~~~~~~~~~

node_modules/@types/jest/index.d.ts:1051:14 - error TS2314: Generic type 'SpyAnd<Fun>' requires 1 type argument(s).

1051         and: SpyAnd;
                  ~~~~~~

node_modules/@types/jest/index.d.ts:1052:16 - error TS2314: Generic type 'Calls<Fun>' requires 1 type argument(s).

1052         calls: Calls;
                    ~~~~~

node_modules/@types/jest/index.d.ts:1058:15 - error TS2428: All declarations of 'SpyAnd' must have identical type parameters.

1058     interface SpyAnd {
                   ~~~~~~

node_modules/@types/jest/index.d.ts:1091:15 - error TS2428: All declarations of 'Calls' must have identical type parameters.

1091     interface Calls {
                   ~~~~~

node_modules/@types/jest/index.d.ts:1117:16 - error TS2314: Generic type 'CallInfo<Fun>' requires 1 type argument(s).

1117         all(): CallInfo[];
                    ~~~~~~~~

node_modules/@types/jest/index.d.ts:1122:23 - error TS2314: Generic type 'CallInfo<Fun>' requires 1 type argument(s).

1122         mostRecent(): CallInfo;
                           ~~~~~~~~

node_modules/@types/jest/index.d.ts:1127:18 - error TS2314: Generic type 'CallInfo<Fun>' requires 1 type argument(s).

1127         first(): CallInfo;
                      ~~~~~~~~

node_modules/@types/jest/index.d.ts:1134:15 - error TS2428: All declarations of 'CallInfo' must have identical type parameters.

1134     interface CallInfo {
                   ~~~~~~~~

node_modules/@types/jest/index.d.ts:1170:9 - error TS2687: All declarations of 'message' must have identical modifiers.

1170         message: string | (() => string);
             ~~~~~~~


Found 40 errors.

npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] build: `tsc -p tsconfig.build.json`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/ubuntu/.npm/_logs/2019-05-23T00_35_21_233Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! [email protected] prestart:prod: `rimraf dist && npm run build`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the [email protected] prestart:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

I'm using bash (windows linux subsystem) with node version 12. I have not touched anything, both apps are freshly created from the CLI.

npm run start works fine btw.

When I create a separate project on its own the nestjs app works fine, only when it is located inside a root containing an angular app do things go wrong. Could the tsconfig files be loking at the parent directory and causing issues?

like image 528
John Gallego Avatar asked May 23 '19 01:05

John Gallego


1 Answers

So I was correct in thinking typescript was looking for typings across parent directories (all the way to "/" apparently).

I fixed this by adding the following command to the compilerOptions section of the tsconfig in my nestjs app:

"typeRoots": ["./node_modules/@types"],

Telling it to only look for typings in that directory.

like image 182
John Gallego Avatar answered Oct 10 '22 05:10

John Gallego