Node.js v20.6 был выпущен с потрясающими новыми функциями, которые являются частью LTS-версий от 24 октября 2023 года. Посмотрим!
Попрощайтесь с пакетом dotenv, теперь Node.js может загружать переменные среды из файла .env.
node --env-file path/to/.env index.js
? Путь к файлу INI обязателен, поскольку Node.js не выбрал имя по умолчанию для файла INI.
? Если INI-файл не существует, процесс узла не завершился сбоем, просто начните работу без переменных среды.
Вы можете загрузить определенные переменные среды 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 при запуске с использованием флага --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.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3