"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Node.js v .env 파일, 가져오기 모듈 및 권한 모델

Node.js v .env 파일, 가져오기 모듈 및 권한 모델

2024-08-22에 게시됨
검색:701

Node.js v .env files, import modules, and Permission Model

Node.js v20.6은 2023년 10월 24일 LTS 버전의 일부인 놀라운 새 기능과 함께 출시되었습니다. 살펴보겠습니다!

INI 구성 파일

dotenv 패키지에 작별 인사를 하세요. 이제 Node.js는 .env 파일에서 환경 변수를 로드할 수 있습니다.

node --env-file path/to/.env index.js

? Node.js가 INI 파일의 기본 이름을 선택하지 않았기 때문에 INI 파일의 경로가 필요합니다.

? INI 파일이 없으면 노드 프로세스가 실패한 것이 아닙니다. 환경 변수 없이 실행을 시작하세요.

NODE_OPTIONS 로드 중

다음 예와 같이 INI 구성 파일을 사용하여 Node.js의 특정 환경 변수(예: NODE_OPTIONS)를 로드할 수 있습니다.

NODE_NO_WARNINGS=1
NODE_OPTIONS="--experimental-permission --allow-fs-read=*"
TZ=Pacific/Honolulu
UV_THREADPOOL_SIZE=5

동일한 방법으로 사용할 수 있습니다:

node --env-file .env index.js

ES 모듈을 미리 로드하세요

--import 플래그를 사용하여 시작 시 ES 모듈을 미리 로드합니다. 모듈은 애플리케이션 코드가 실행되기 전에, 심지어 진입점에서도 로드됩니다.

node --import path/to/file.js index.js

이 플래그는 CommonJS 모듈을 로드하는 데 사용되는 잘 알려진 --require 플래그와 유사합니다.

? --require가 사전 로드된 모듈은 --import가 사전 로드된 모듈보다 먼저 실행됩니다.

권한 모델

권한 모델이라는 Node.js 프로세스를 실행하는 동안 특정 리소스에 대한 액세스를 제한하는 새로운 메커니즘이 있습니다. API는 활성화되면 명시적으로 허용되지 않은 모든 리소스에 대한 액세스를 제한하는 --experimental-permission 플래그 뒤에 있습니다.

파일 시스템 권한

--allow-fs-read 플래그는 *를 사용하는 모든 FileSystemRead 작업을 허용하거나 절대 경로를 사용하는 특정 경로를 허용합니다.

node --experimental-permission --allow-fs-read=* index.js

특정 경로에 대한 액세스만 허용하려면 절대 경로를 사용해야 합니다.

node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js

? 초기화 모듈도 허용되어야 합니다. 그렇지 않으면 Node.js 프로세스 자체에서 index.js 파일을 로드할 수 없습니다.

? 를 사용할 수 있습니다. 작업 디렉토리에 대한 액세스를 허용하지만 이를 사용하여 파일 경로를 지정할 수는 없습니다(예: ./index.js).

node --experimental-permission --allow-fs-read=. index.js

--allow-fs-write 플래그는 *를 사용하여 특정 경로 또는 전체 파일 시스템에 대한 액세스를 허용합니다.

node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js

하위 프로세스

권한 모델이 활성화되면 프로세스는 기본적으로 하위 프로세스를 생성할 수 없습니다. 이 작업을 허용하려면 --allow-child-process를 사용해야 합니다. index.js에 다음 코드를 사용하겠습니다.

const childProcess = require('node:child_process');
childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);

권한 모델이 활성화된 상태에서 이 코드 조각을 실행하려면 다음 명령을 사용하여 index.js를 실행해야 합니다.

node --experimental-permission --allow-fs-read . --allow-child-process index.js

? 하위 프로세스는 기본적으로 권한 모델을 상속하지 않으므로 new-file.txt가 성공적으로 생성됩니다.

추가 옵션

이 권한 모델에서 작업자 스레드를 생성하려면 --allow-worker 플래그를 확인하고 WASI 인스턴스 생성을 허용하려면 --allow-wasi를 확인할 수 있습니다.

결론

우리는 애플리케이션에 대한 환경 변수를 로드하기 위한 많은 새로운 도구, 코드에 필요한 사전 로드 ES 모듈을 가져오는 방법, 시스템 보안을 강화하기 위한 새로운 권한 모델을 보유하고 있습니다.

Node.js의 블로그를 계속 지켜봐 주시기 바랍니다. 이 팀은 모든 버전에 멋진 기능을 추가하고 있습니다! 우리는 v22.6.0에서 DevTools를 사용하여 초기 TypeScript 지원과 네트워크 검사를 제공합니다.

릴리스 선언문 이 기사는 https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1에 복제되어 있습니다.1 침해가 있는 경우에는 [email protected]으로 문의하시기 바랍니다. 그것을 삭제하려면
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3