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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With