강의

멘토링

커뮤니티

Inflearn Community Q&A

uoon's profile image
uoon

asked

Full Stack React Toy Project - REST, GraphQL (for FE Developers)

Create express server and json database

yarn run server 에러 발생

Resolved

Written on

·

733

0

yarn 워크스페이스 구성하고 필요한 패키지를 설치했는데
nodemon ./src/index.js

위 커맨드 실행시 에러가 발생합니다. yarn 2 버전을 사용하고 있는데 버전 1로 다운그레이드 해도 동일한 현상이 발생하네요.. 의존성 관리에 문제가 있는 것 같은데 해결책이 있을까요? 폴더 구조는 강의와 동일합니다.

// package.json

{
"version": "1.0.0",
"name": "node-graphql",
"private": true,
"workspaces": [
"client",
"server"
],
"scripts": {
"frontend": "yarn workspace client start",
"server": "yarn workspace server start"
}
}

// server/package.json

{
"version": "1.0.0",
"name": "server",
"main": "index.js",
"type": "module",
"license": "MIT",
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"uuid": "^8.3.2"
},
"devDependencies": {
"nodemon": "^2.0.15"
},
"scripts": {
"start": "nodemon ./src/index.js"
}
}

 

에러 내용

(node:76305) ExperimentalWarning: The ESM module loader is experimental. internal/modules/run_main.js:54 internalBinding('errors').triggerUncaughtException( ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'express' imported from /Users/iyuun/WebstormProjects/node-graphql/server/src/index.js Did you mean to import express-npm-4.17.1-6815ee6bf9-c4b470d623.zip/node_modules/express/index.js?

server 폴더에서 express 깔았는데도 그러네요..

에러reactrest-apigraphql

Answer 2

2

uoon lee님의 프로필 이미지
uoon lee
Questioner

yarn pnp 사용했을 때 나타나는 에러인 것 같습니다. pnp module 시스템에서 esm을 지원하지 않아서 package.json에 "type": "module"을 추가해도 원하는 패키지를 찾을 수가 없네요.

관련 이슈: https://github.com/yarnpkg/berry/issues/638

.yarnrc.yml 파일에 

nodeLinker: node-modules

이렇게 설정해줘서 해결하긴 했는데 강의에는 관련 내용이 없는 걸 보니 pnp 사용을 안해서 그런 건지 궁금하네요.

jaenam님의 프로필 이미지
jaenam
Instructor

네, yarn 1.0 베이스에요. yarn berry 사용시에는 그런 문제가 있군요..

시시각각 변하는 라이브러리가 많아 일일이 대응하기가 힘든 측면이 있습니다.

양해 부탁드리고, 답변주신 내용은 강의노트에 추가해 놓겠습니다. 감사합니다!

0

jaenam님의 프로필 이미지
jaenam
Instructor

The comment has been deleted

uoon lee님의 프로필 이미지
uoon lee
Questioner

server/src/index.js 입니다!

import express from 'express';
import cors from 'cors';
import messagesRoute from './routes/messages.js'
import usersRoute from './routes/users.js'

const app = express();
app.use(express.urlencoded({ extended: true }))
app.use(express.json());

app.use(cors({
origin: 'http://localhost:3000',
credentials: true
}))

const routes = [...messagesRoute, ...usersRoute];

routes.forEach(({ method, route, handler}) => {
app[method](route, handler)
})

app.listen(8000, () => {
console.log('server listening on 8000..')
})
uoon's profile image
uoon

asked

Ask a question