nestjs-sentry: Error: Cannot find module 'graphql' (is graphql mandatory?)

I installed nestjs-sentry package, but it seems that graphql is a mandatory package to have as a dependency. I’ve seen in the README something about Interceptors but I’m not sure if I understood it.

app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AuthModule } from './auth/auth.module';
import { UsersModule } from './users/users.module';
import { TypeOrmModule } from '@nestjs/typeorm';
import { getConnectionOptions } from 'typeorm';
import { LevelsModule } from './levels/levels.module';
import { MoviesModule } from './movies/movies.module';
import { LevelsQuotesModule } from './levels-quotes/levels-quotes.module';
import { UsersProgressesModule } from './users-progresses/users-progresses.module';
import { ProductsModule } from './products/products.module';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { LeaderboardsModule } from './leaderboards/leaderboards.module';
import { SentryModule } from '@ntegral/nestjs-sentry';
import { LogLevel } from '@sentry/types';

@Module({
  imports: [
    SentryModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: async (cfg: ConfigService) => ({
        dsn: cfg.get('SENTRY_DSN'),
        debug: false,
        environment: process.env.NODE_ENV,
        release: null, // must create a release in sentry.io dashboard
        logLevel: LogLevel.Debug, //based on sentry.io loglevel //
      }),
      inject: [ConfigService],
    }),
    ConfigModule.forRoot(),
    TypeOrmModule.forRootAsync({
      useFactory: async () =>
        Object.assign(await getConnectionOptions(), {
          autoLoadEntities: true,
        }),
    }),
    AuthModule,
    UsersModule,
    LevelsModule,
    MoviesModule,
    LevelsQuotesModule,
    UsersProgressesModule,
    ProductsModule,
    LeaderboardsModule,
  ],
  controllers: [AppController],
})
export class AppModule {}

logs

[18:58:29] Found 0 errors. Watching for file changes.

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

Error: Cannot find module 'graphql'
Require stack:
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@nestjs\graphql\dist\decorators\directive.decorator.js
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@nestjs\graphql\dist\decorators\index.js
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@nestjs\graphql\dist\index.js
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@nestjs\graphql\index.js
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@ntegral\nestjs-sentry\dist\graphql.interceptor.js
- C:\Users\Jeremy\www\memorable-nest-api\node_modules\@ntegral\nestjs-sentry\dist\index.js
- C:\Users\Jeremy\www\memorable-nest-api\dist\app.module.js
- C:\Users\Jeremy\www\memorable-nest-api\dist\main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
    at Function.Module._load (internal/modules/cjs/loader.js:677:27)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
    at Object.<anonymous> (C:\Users\Jeremy\www\memorable-nest-api\node_modules\@nestjs\graphql\dist\decorators\directive.
decorator.js:4:19)
    at Module._compile (internal/modules/cjs/loader.js:936:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:947:10)
    at Module.load (internal/modules/cjs/loader.js:790:32)
    at Function.Module._load (internal/modules/cjs/loader.js:703:12)
    at Module.require (internal/modules/cjs/loader.js:830:19) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@nestjs\\graphql\\dist\\decorators\\directive.decorator.js
',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@nestjs\\graphql\\dist\\decorators\\index.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@nestjs\\graphql\\dist\\index.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@nestjs\\graphql\\index.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@ntegral\\nestjs-sentry\\dist\\graphql.interceptor.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\node_modules\\@ntegral\\nestjs-sentry\\dist\\index.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\dist\\app.module.js',
    'C:\\Users\\Jeremy\\www\\memorable-nest-api\\dist\\main.js'
  ]
}
package.json
{
  "name": "memorable-nest-api",
  "version": "0.0.1",
  "description": "",
  "author": "",
  "private": true,
  "license": "UNLICENSED",
  "scripts": {
    "prebuild": "rimraf dist",
    "build": "nest build",
    "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
    "start": "nest start",
    "start:dev": "nest start --watch",
    "start:debug": "nest start --debug --watch",
    "start:prod": "node dist/main",
    "lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
    "test": "jest",
    "test:watch": "jest --watch",
    "test:cov": "jest --coverage",
    "test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
    "test:e2e": "jest --config ./test/jest-e2e.json"
  },
  "dependencies": {
    "@nestjs/common": "^7.6.13",
    "@nestjs/config": "^0.6.3",
    "@nestjs/core": "^7.6.13",
    "@nestjs/jwt": "^7.2.0",
    "@nestjs/passport": "^7.1.5",
    "@nestjs/platform-express": "^7.6.13",
    "@nestjs/swagger": "^4.8.0",
    "@nestjs/typeorm": "^7.1.5",
    "@nestjsx/crud": "^5.0.0-alpha.3",
    "@nestjsx/crud-typeorm": "^5.0.0-alpha.3",
    "@ntegral/nestjs-sentry": "^2.0.6",
    "@sentry/node": "^6.2.3",
    "@types/node-fetch": "^2.5.8",
    "class-transformer": "^0.4.0",
    "class-validator": "^0.13.1",
    "google-auth-library": "^7.0.2",
    "http-status-codes": "^2.1.4",
    "mysql2": "^2.2.5",
    "passport": "^0.4.1",
    "passport-jwt": "^4.0.0",
    "passport-local": "^1.0.0",
    "reflect-metadata": "^0.1.13",
    "rimraf": "^3.0.2",
    "rxjs": "^6.6.6",
    "typeorm": "^0.2.31"
  },
  "devDependencies": {
    "@nestjs/cli": "^7.5.6",
    "@nestjs/schematics": "^7.2.7",
    "@nestjs/testing": "^7.6.13",
    "@types/express": "^4.17.11",
    "@types/jest": "^26.0.20",
    "@types/node": "^14.14.31",
    "@types/passport-jwt": "^3.0.5",
    "@types/passport-local": "^1.0.33",
    "@types/supertest": "^2.0.10",
    "@typescript-eslint/eslint-plugin": "^4.15.2",
    "@typescript-eslint/parser": "^4.15.2",
    "eslint": "^7.20.0",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-prettier": "^3.3.1",
    "jest": "^26.6.3",
    "prettier": "^2.2.1",
    "supertest": "^6.1.3",
    "ts-jest": "^26.5.2",
    "ts-loader": "^8.0.17",
    "ts-node": "^9.1.1",
    "tsconfig-paths": "^3.9.0",
    "typescript": "^4.1.5"
  },
  "jest": {
    "moduleFileExtensions": [
      "js",
      "json",
      "ts"
    ],
    "rootDir": "src",
    "testRegex": ".*\\.spec\\.ts$",
    "transform": {
      "^.+\\.(t|j)s$": "ts-jest"
    },
    "collectCoverageFrom": [
      "**/*.(t|j)s"
    ],
    "coverageDirectory": "../coverage",
    "testEnvironment": "node"
  }
}

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 4
  • Comments: 17 (8 by maintainers)

Most upvoted comments

Looks like the library is exporting everything in the index.ts file, therefore the import statements in the graphql.interceptor gets evaulated.

I’ll take a look at this. Thanks

I failed to get this package to work out of the box, so I now use nest-raven. Works like a charm.