Backend/Node.js

Node.js 23 출시 - 어떤 기능이 추가되었을까요?

둉이 2024. 10. 18. 13:53

 

Node.js 22 버전이 출시된 지 아직 6개월밖에 지나지 않은 2024년 10월 16일, 벌써 23 버전이 출시되었다고 합니다.

 

홀수 버전이긴 하지만, 이번에는 어떤 기능이 추가되었는지 같이 보면 좋을 것 같아서 가져와 봤어요.

 

1) require(esm) 기능 기본 제공

기존에는 require() 함수로 esm 파일을 임포트하고자 하는 경우에는 --experimental-require-module 플래그를 붙여줘야 했는데요, (노드 20 이상부터 가능)

 

23버전부터는 플래그 없이도 기본적으로 해당 기능을 제공합니다.

// hello.mjs
import util from 'node:util';
export const hello = util.format('hello %s', 'world');

// index.cjs
'use strict';
console.log(require('./hello.mjs').hello);  // 오류 없이 잘 동작해요

 

물론 아직 실험 단계이긴 하지만, 기능 안정화를 위한 사용자 피드백을 받고 있다고 하니 24버전에서 안정화되길 기대해도 좋을 것 같아요.

 

참고로 --no-experimental-require-module 플래그를 사용하여 해당 기능을 끌 수도 있습니다.

 

 

2) Windows 32비트 시스템 지원 중단

Node.js가 더이상 구형 개발환경을 지원하지 않기로 결정했어요.

 

아직도 32비트 쓰고 계신 분은 없으시죠?

 

 

3) 컴파일 없이 Typescript 파일 실행 (v22.6.0부터 사용 가능)

지금까지는 ts-node나 tsc를 이용하여 타입스크립트 파일을 실행하곤 했는데요,

 

이번에 추가된 --experimental-strip-types 플래그를 사용하면 별도의 컴파일 없이도 타입스크립트 실행이 가능하다고 합니다.

 

자세한 내용은 https://github.com/nodejs/node/pull/53725 를 참고해 주세요.

 

 

4) 실험적 웹 스토리지 API (v22.6.0부터 사용 가능)

브라우저에서만 사용 가능했던 Web Storage API의 기능을 일부 사용할 수 있게 되었어요.

 

--experimental-webstorage 플래그를 사용하면 해당 기능을 사용할 수 있으며, localStorage의 경우에는 파일이 저장될 위치를 지정하기 위해 --localstorage-file도 함께 사용해야 합니다.

// 1. 로컬 스토리지 - 파일로 저장
localStorage.setItem('RuleToLiveBy', 'Never bet against Node.js');
console.log(localStorage.getItem('RuleToLiveBy'));

// 2. 세션 스토리지 - memory에 저장
sessionStorage.setItem('RuleToLiveBy', 'I told you never bet against Node.js');
console.log(sessionStorage.getItem('RuleToLiveBy'));

// 명령어 실행 예시
node --experimental-webstorage --localstorage-file=data.bin test-local-storage.js

 

 

기타

이 외에도 node --run 플래그 실행 안정화, 테스트 러너 개선, 버퍼 성능 개선, 향상된 V8 엔진 탑재 등 다양한 내용이 있으니 기대해봐도 좋을 것 같아요.

 

참고로 Node.js 22 버전은 올해 10월 29일에 LTS로 승격된다고 합니다.

 

버전.. 올려야겠죠? 🙈