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로 빌드하고 실행하는것 까지 진행해 보겠다.