Note ≣ ⎮ 노드 내장 모듈과 npm 패키지 이름이 같은 경우는 없나요?
있습니다. 예를 들어 fs(https://www.npmjs.com/package/fs)나 os(https://www.npmjs.com/package/os) 등의 패키지가 npm에 존재합니다. 다만 이러한 패키지를 설치할 이유는 없습니다. 또한, 실수로 내장 모듈과 동일한 이름의 패키지를 설치하더라도 require할 때 내장 모듈을 불러오므로 걱정하지 않아도 됩니다. 직접 검증해봅시다.
콘솔
$ npm i fs express
protocol.js
console.log(require.resolve('fs'));
console.log(require.resolve('express'));
console.log(require.resolve('node:fs'));
콘솔
$ node protocol
fs
C:\Users\zerocho
ode_modules\express\index.js
node:fs
require.resolve로 해당 모듈을 어디에서 불러오는지 확인할 수 있습니다. 내장 모듈의 경우 이름만 표시됩니다. express와 같이 npm에서 설치한 패키지는 전체 경로가 표시됩니다. fs와 express 모두 npm을 통해 설치했지만, fs의 경우 내장 모듈을 불러오는 것을 알 수 있습니다.
명시적으로 내장 모듈을 사용함을 밝히고 싶다면 노드 프로토콜(node:)을 사용하세요. 예를 들어 require('fs') 대신 require('node:fs')로 불러오면 됩니다.
앞으로의 실습을 위해 npm을 통해 설치한 fs 패키지를 제거합시다.
콘솔
$ npm rm fs