«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Файлы Node.js v.env, модули импорта и модель разрешений

Файлы Node.js v.env, модули импорта и модель разрешений

Опубликовано 22 августа 2024 г.
Просматривать:260

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

Node.js v20.6 был выпущен с потрясающими новыми функциями, которые являются частью LTS-версий от 24 октября 2023 года. Посмотрим!

Файлы конфигурации INI

Попрощайтесь с пакетом dotenv, теперь Node.js может загружать переменные среды из файла .env.

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

? Путь к файлу INI обязателен, поскольку Node.js не выбрал имя по умолчанию для файла INI.

? Если INI-файл не существует, процесс узла не завершился сбоем, просто начните работу без переменных среды.

Загрузка NODE_OPTIONS

Вы можете загрузить определенные переменные среды Node.js (например, NODE_OPTIONS), используя файл конфигурации INI, как показано в следующем примере:

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

Предварительная загрузка модулей ES при запуске с использованием флага --import, модуль будет загружен до запуска любого кода приложения, даже точки входа.

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

Этот флаг аналогичен хорошо известному флагу --require, используемому для загрузки модулей CommonJS.

? Модули, предварительно загруженные с помощью --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

? Модуль инициализатора также необходимо разрешить. В противном случае файл index.js не сможет быть загружен самим процессом Node.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, если хотите создавать рабочие потоки в рамках этой модели разрешений, и --allow-wasi, чтобы разрешить создание экземпляров WASI

Заключение

У нас есть много новых инструментов для загрузки переменных среды для нашего приложения, метод импорта предварительной загрузки ES-модулей, необходимых в нашем коде, и новая модель разрешений для повышения безопасности наших систем.

Следите за обновлениями в блоге Node.js: эта команда добавляет потрясающие функции в каждую версию! У нас есть начальная поддержка TypeScript и проверка сети с использованием DevTools в версии 22.6.0.

Заявление о выпуске Эта статья переиздана по адресу: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с учебой[email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3