Node.js Project 설정 가이드 (2) - 여러 파일
지금까지 우리의 프로젝트 구조는 다음과 같다.
src
- indx.ts
package.json
package-lock.json
tsconfig.json
프로젝트라고 하면 사실 하나의 파일로 구성될 리가 없다. 가령 util 폴더 내에 어떤 함수가 있고 index.ts는 이를 이용한다고 해보자.
여러 파일로 구성해보기
src 폴더 하위에 utils 폴더를 하나 만들고 그 안에 printName.ts를 생성하자. 그리고 다음과 같은 내용으로 채워보자. (일부러 let을 쓰고 세미콜론도 빼보자.)
let printName = (name: string) => {
console.log(`My name is ${name}`)
}
export default printName
그리고 index.ts에서 prin 정도까지 치면 아마 자동완성이 뜰 것이다.

아래와 같이 완성하자.
import printName from './utils/printName'
console.log("hello world")
printName("dave");
실행결과
➜ my-nodejs-proj npx ts-node src/index.ts
(node:11445) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/davelee/Documents/projects/javascript-projects/my-nodejs-proj/src/index.ts:1
import printName from './utils/printName';
^^^^^^
SyntaxError: Cannot use import statement outside a module
오류 수정
이는 ts-node가 import/export 문법을 제대로 처리하지 못하기 때문이라고 한다. 잠시 tsconfig.json의 compilerOptions에서 module부분을 "module": "CommonJS",
(예전 스타일) 로 변경해보자.
➜ my-nodejs-proj npx ts-node src/index.ts
hello world
My name is dave
➜ my-nodejs-proj
잘 실행된 것을 확인할 수 있다.
원복
그렇지만 다시 돌려놓자. 필드에서는 nodejs 프로젝트를 이렇게 실행시키지는 않는다. 다음포스팅에서는 바벨을 통해 프로젝트를 javascript로 빌드하고 실행하는것 까지 진행해 보겠다.