Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nestjs Error: Cannot find module './app.controller'

I cant seem to locate where the error is coming from as the app compiled with Found 0 errors. Watching for file changes. I have seen similar resolve on StackOverflow but none seem to address the issue

Here is the stack trace

internal/modules/cjs/loader.js:797
    throw err;
    ^

Error: Cannot find module './app.controller'
Require stack:
- C:\Users\DELL\Documents\DokunFiles\Nestjs\app\api\dist\src\app.module.js
- C:\Users\DELL\Documents\DokunFiles\Nestjs\app\api\dist\src\main.js

With the appModule below, the app controller is properly imported into the app module

app.module.ts

import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';

import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UserModule } from './user/user.module';


@Module({
  imports: [MongooseModule.forRoot(process.env.MONGO_URI,
    {
      useNewUrlParser: true,
      useUnifiedTopology: true
    })
    , UserModule,
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule { }

app.controller.ts

import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

like image 534
techstack Avatar asked Apr 19 '20 14:04

techstack


3 Answers

Run:

npm run prebuild

or

rimraf dist

or

 rm -rf dist/

And try again.


I had the same issue:

stanislas@yeji > nest start                                                                                                    api -> master ! ? RC=130
internal/modules/cjs/loader.js:983
  throw err;
  ^

Error: Cannot find module './app.controller'
Require stack:
- /Users/stanislas/git/soundbase/api/dist/src/app.module.js
- /Users/stanislas/git/soundbase/api/dist/src/main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:980:15)
    at Function.Module._load (internal/modules/cjs/loader.js:862:27)
    at Module.require (internal/modules/cjs/loader.js:1042:19)
    at require (internal/modules/cjs/helpers.js:77:18)
    at Object.<anonymous> (/Users/stanislas/git/soundbase/api/dist/src/app.module.js:13:26)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Module.require (internal/modules/cjs/loader.js:1042:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/stanislas/git/soundbase/api/dist/src/app.module.js',
    '/Users/stanislas/git/soundbase/api/dist/src/main.js'
  ]
}

And noticed the controller was indeed not compiled:

stanislas@yeji > ll dist/src/                                                                      api -> master ! ?
total 48
-rw-r--r--  1 stanislas  staff   138B Apr 19 17:45 app.module.d.ts
-rw-r--r--  1 stanislas  staff   2.1K Apr 19 17:45 app.module.js
-rw-r--r--  1 stanislas  staff   753B Apr 19 17:45 app.module.js.map
-rw-r--r--  1 stanislas  staff    11B Apr 19 17:45 main.d.ts
-rw-r--r--  1 stanislas  staff   340B Apr 19 17:45 main.js
-rw-r--r--  1 stanislas  staff   290B Apr 19 17:45 main.js.map
drwxr-xr-x  5 stanislas  staff   160B Apr 19 17:52 migration

But I noticed it worked as prod:

stanislas@yeji > npm run build && npm run start:prod                                                                             api -> master ! ? RC=1

> [email protected] prebuild /Users/stanislas/git/soundbase/api
> rimraf dist


> [email protected] build /Users/stanislas/git/soundbase/api
> nest build


> [email protected] start:prod /Users/stanislas/git/soundbase/api
> node dist/main

[Nest] 95175   - 04/19/2020, 6:40:45 PM   [NestFactory] Starting Nest application...
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] PassportModule dependencies initialized +34ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] JwtModule dependencies initialized +1ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] AuthModule dependencies initialized +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] AppModule dependencies initialized +1ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +56ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] TypeOrmModule dependencies initialized +1ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [InstanceLoader] UsersModule dependencies initialized +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RoutesResolver] AppController {}: +3ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/auth/login, POST} route +3ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/profile, GET} route +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RoutesResolver] UserController {/users}: +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/users, POST} route +1ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/users, GET} route +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/users/:id, GET} route +1ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/users/:id, PUT} route +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [RouterExplorer] Mapped {/users/:id, DELETE} route +0ms
[Nest] 95175   - 04/19/2020, 6:40:45 PM   [NestApplication] Nest application successfully started +2ms

And then it automagically started working again:

stanislas@yeji > npm start                                                                                                     api -> master ! ? RC=130

> [email protected] start /Users/stanislas/git/soundbase/api
> nest start

[Nest] 95255   - 04/19/2020, 6:41:00 PM   [NestFactory] Starting Nest application...
[Nest] 95255   - 04/19/2020, 6:41:00 PM   [InstanceLoader] PassportModule dependencies initialized +35ms
[Nest] 95255   - 04/19/2020, 6:41:00 PM   [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 95255   - 04/19/2020, 6:41:00 PM   [InstanceLoader] JwtModule dependencies initialized +0ms
[Nest] 95255   - 04/19/2020, 6:41:00 PM   [InstanceLoader] AuthModule dependencies initialized +1ms
[Nest] 95255   - 04/19/2020, 6:41:00 PM   [InstanceLoader] AppModule dependencies initialized +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [InstanceLoader] TypeOrmCoreModule dependencies initialized +56ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [InstanceLoader] UsersModule dependencies initialized +1ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RoutesResolver] AppController {}: +3ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/auth/login, POST} route +2ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/profile, GET} route +1ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RoutesResolver] UserController {/users}: +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/users, POST} route +1ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/users, GET} route +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/users/:id, GET} route +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/users/:id, PUT} route +1ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [RouterExplorer] Mapped {/users/:id, DELETE} route +0ms
[Nest] 95255   - 04/19/2020, 6:41:01 PM   [NestApplication] Nest application successfully started +2ms

Since I already tried nest build && node dist/main.js beforehand, I'm pretty sure npm run prebuild aka rimraf dist (which just rm -rf dist/) did the trick. Since the issue was in the dist folder, that seems logical enough for me. Not sure what the exact issue was though.

like image 145
angristan Avatar answered Oct 13 '22 17:10

angristan


Look for "incremental": true in your tsconfig.json file. The true makes incremental updates. Setting it to false hopefully will save you having to clean dist every time

like image 21
Somjit Avatar answered Oct 13 '22 18:10

Somjit


Check file extension. In my case file with controller has .js extension, but must .ts

like image 37
Damsel of Distress Avatar answered Oct 13 '22 18:10

Damsel of Distress