• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@nestjs/core의 import 문제

23.02.06 19:48 작성 조회수 1.57k

0

우선 잘 되는것이 갑자기 안되는데 해결이 안되서 질문을 올립니다.

 

우선 제가 한 작업은 다음과 같습니다.

  1. 7강의 typeorm 커넥션 맺기까지 완료 한 후 nest g res {service name}을 실행하여 테스트 했습니다

  2. 폴더가 생기면서 service, module, controller가 생기는것을 확인 한 후 삭제했습니다.

  3. 이후 yarn start:dev를 실행하면 아래와 같이 에러가 났습니다.

 


yarn run v1.22.19

warning ..\package.json: No license field

$ nest build --webpack --webpackPath webpack-hmr.config.js --watch

Info Webpack is building your sources...

ERROR in ./src/main.ts:1:29

TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.

> 1 | import { NestFactory } from '@nestjs/core';

| ^^^^^^^^^^^^^^

2 | import { DocumentBuilder } from '@nestjs/swagger';

3 | import { SwaggerModule } from '@nestjs/swagger/dist';

4 | import { AppModule } from './app.module';

webpack 5.75.0 compiled with 1 error in 3426 ms

E:\web-message\dist\main.js:1834

/******/ throw e;

^

Error: Cannot find module '@nestjs/core'

Require stack:

- E:\web-message\dist\main.js

at Module._resolveFilename (node:internal/modules/cjs/loader:1039:15)

at Module._load (node:internal/modules/cjs/loader:885:27)

at Module.require (node:internal/modules/cjs/loader:1105:19)

at require (node:internal/modules/cjs/helpers:103:18)

at Object.<anonymous> (E:\web-message\dist\main.js:196:18)

at __webpack_require__ (E:\web-message\dist\main.js:1831:33)

at fn (E:\web-message\dist\main.js:1938:21)

at Object.<anonymous> (E:\web-message\dist\main.js:166:16)

at __webpack_require__ (E:\web-message\dist\main.js:1831:33)

at E:\web-message\dist\main.js:2757:37 {

code: 'MODULE_NOT_FOUND',

requireStack: [ 'E:\\web-message\\dist\\main.js' ]

}

Node.js v18.13.0


우선 warning ..\package.json: No license field 이 부분을 해결하기 위해 찾아보니..

package.json의 private: true를 설정해 주라고 했지만, 이미 되어 있기 때문에 해결을 못했습니다.

 

그 다음

ERROR in ./src/main.ts:1:29

TS2307: Cannot find module '@nestjs/core' or its corresponding type declarations.

> 1 | import { NestFactory } from '@nestjs/core';

이 부분을 해결해 보기 위해 다음과 같은 작업을 했습니다.

  1. @nestjs/core의 삭제 및 재설치

  2. node_modules 폴더 삭제 및 재설치

  3. nestjs/core와 swagger의 충돌 문제가 있다는 얘기에 nestjs/core를 9.0.0으로 nestjs/common을 9.0.0으로, nestjs/platform-express를 9.0.0으로 수정하여 재설치 했으나 여전히 동일한 문제 발생

 

아래는 현재 저의 package.json입니다


{
   "name": "web-message",
   "version": "0.0.1",
   "private": true,
   "description": "",
   "author": "",
   "license": "UNLICENSED",
   "scripts": {
      "build": "nest build",
      "format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
      "start": "nest start",
      "start:dev-backup": "nest start --watch",
      "start:dev": "nest build --webpack --webpackPath webpack-hmr.config.js --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": "^9.3.2",
      "@nestjs/config": "^2.3.0",
      "@nestjs/core": "^9.3.2",
      "@nestjs/platform-express": "^9.0.0",
      "@nestjs/swagger": "^6.1.4",
      "@nestjs/typeorm": "^9.0.1",
      "mariadb": "^3.0.2",
      "reflect-metadata": "^0.1.13",
      "rxjs": "^7.2.0",
      "swagger-ui-express": "^4.6.0",
      "typeorm": "^0.3.11",
      "typeorm-extension": "^2.4.2"
   },
   "devDependencies": {
      "@nestjs/cli": "^9.0.0",
      "@nestjs/schematics": "^9.0.0",
      "@nestjs/testing": "^9.0.0",
      "@types/express": "^4.17.13",
      "@types/jest": "29.2.4",
      "@types/node": "18.11.18",
      "@types/supertest": "^2.0.11",
      "@typescript-eslint/eslint-plugin": "^5.0.0",
      "@typescript-eslint/parser": "^5.0.0",
      "eslint": "^8.0.1",
      "eslint-config-prettier": "^8.3.0",
      "eslint-plugin-prettier": "^4.0.0",
      "jest": "29.3.1",
      "prettier": "^2.3.2",
      "run-script-webpack-plugin": "^0.1.1",
      "source-map-support": "^0.5.20",
      "supertest": "^6.1.3",
      "ts-jest": "29.0.3",
      "ts-loader": "^9.2.3",
      "ts-node": "^10.0.0",
      "tsconfig-paths": "4.1.1",
      "typeorm-model-generator": "^0.4.6",
      "typescript": "^4.7.4",
      "webpack": "^5.75.0",
      "webpack-cli": "^5.0.1",
      "webpack-node-externals": "^3.0.0",
      "webpack-pnp-externals": "^1.1.0"
   },
   "jest": {
      "moduleFileExtensions": [
         "js",
         "json",
         "ts"
      ],
      "rootDir": "src",
      "testRegex": ".*\\.spec\\.ts$",
      "transform": {
         "^.+\\.(t|j)s$": "ts-jest"
      },
      "collectCoverageFrom": [
         "**/*.(t|j)s"
      ],
      "coverageDirectory": "../coverage",
      "testEnvironment": "node"
   }
}

 

뭔가... 업데이트를 하면서 문제가 생긴것 같아 찾던 중

nestjs@core와 swagger는 상호 작용하는 버전이 있다고 하던데 그것은

nest 9.X 미만에서 그런 것이고 github에 올려주신 package.json에도 9.X이상의 nestjs를 쓰신것으로 확인하여 swagger와의 충돌 문제는 아닌 것으로 생각했습니다.

 

어떻게 해결하면 좋을까요~?

 

참 참고로

nestjs : 9.1.8

yarn: 1.22.19

node: 18.13.0

을 사용하고 있습니다.

답변 1

답변을 작성해보세요.

0

node_modules 폴더 안에 @nestjs 폴더 안에 core가 있나 확인헤보세요

yisi님의 프로필

yisi

질문자

2023.02.06

네 있습니다.
cli, common, config, core, mapped-types, platform-express, schematics, swagger, testing, typeorm 이 있습니다.

경로문제로 보이긴 한데

E:\web-message 폴더 안에 노드모듈즈가 있나요?

yisi님의 프로필

yisi

질문자

2023.02.07

네 있습니다

폴더를 아예 삭제해보고 전부 다시 설치해 보기도 했습니다.

아무래도 nest g res 를 실행하면서 뭔가 문제가 생긴 것 같은데...

그 명령어를 실행할때 nest g res testCRUD라고 했었거든요. 근데 그게 처음에는 잘 안되서 두번 실행했는데 그 때 폴더가 제대로 생기길래 확인하고 삭제했었습니다.

일단 새로 프로젝트를 만들어서 파일을 하나씩 옮겨보려고 합니다.

그래도 안되면 다시 한번 여쭤볼게요~

yisi님의 프로필

yisi

질문자

2023.02.07

일단 해결은 했습니다....

.yarn 폴더와 node_modules 폴더를 삭제하고 재설치를 진행하니 더 이상 @nestjs/core의 import 오류는 발생하지 않습니다.

아마도 nest g res 를 실행하다가 뭔가 에러가 나서 module들의 폴더에 문제가 생긴게 아닐까 싶습니다.

다만 Web storm 상단에 이런 메시지가 뜨네요..

ESLint: Specify a path to the 'eslint' package

서치해보니.. eslint를 설치하라는 것 밖에 아직 못찾았는데 설치해도 똑같긴 합니다.

좀 더 찾아봐야 겠네요.

 

어쨋든 먼저의 에러는 정확한 원인은 못찾았으나 해결이 되긴 했네요;;;

eslint는 웹스톰 환경설정에서 eslint 검색 후 설치한 위치를 입력하시면 됩니다.

yisi님의 프로필

yisi

질문자

2023.02.07

넵 감사합니다.~