Node.js v20.6 foi lançado com novos recursos incríveis que fazem parte das versões LTS a partir de 24 de outubro de 2023. Vamos ver!
Diga adeus ao pacote dotenv, agora o Node.js pode carregar variáveis de ambiente de um arquivo .env.
node --env-file path/to/.env index.js
? O caminho para o arquivo INI é necessário porque o Node.js não escolheu um nome padrão para o arquivo INI.
? Se o arquivo INI não existir, o processo do nó não falhou, basta começar a executar sem as variáveis de ambiente.
Você pode carregar variáveis de ambiente específicas do Node.js (como NODE_OPTIONS) usando um arquivo de configuração INI como o exemplo a seguir:
NODE_NO_WARNINGS=1 NODE_OPTIONS="--experimental-permission --allow-fs-read=*" TZ=Pacific/Honolulu UV_THREADPOOL_SIZE=5
Você pode usar isso com o mesmo método:
node --env-file .env index.js
Pré-carregue os módulos ES na inicialização usando o sinalizador --import, o módulo será carregado antes de qualquer código do aplicativo ser executado, até mesmo o ponto de entrada.
node --import path/to/file.js index.js
Este sinalizador é semelhante ao conhecido sinalizador --require usado para carregar módulos CommonJS.
? Módulos pré-carregados com --require serão executados antes dos módulos pré-carregados com --import.
Temos um novo mecanismo para restringir o acesso a recursos específicos durante a execução de um processo Node.js chamado Modelo de Permissão. A API existe atrás de um sinalizador --experimental-permission que, quando ativado, restringirá o acesso a todos os recursos não explicitamente permitidos.
O sinalizador --allow-fs-read permite todas as operações FileSystemRead usando * ou para caminhos específicos usando rotas absolutas.
node --experimental-permission --allow-fs-read=* index.js
Para permitir acesso apenas a caminhos específicos, você deve usar rotas absolutas
node --experimental-permission --allow-fs-read=/path/to/index.js --allow-fs-read=/path/to/directory index.js
? O módulo inicializador também precisa ser permitido. Caso contrário, o arquivo index.js não poderá ser carregado pelo próprio processo Node.js.
? Você pode usar. para permitir acesso ao diretório de trabalho, mas você não pode usá-lo para especificar o caminho para um arquivo (por exemplo, ./index.js).
node --experimental-permission --allow-fs-read=. index.js
O sinalizador --allow-fs-write permite acesso a caminhos específicos ou a todo o sistema de arquivos usando *.
node --experimental-permission --allow-fs-read=. --allow-fs-write=/tmp/ index.js
Quando o modelo de permissão estiver habilitado, o processo não será capaz de gerar nenhum processo filho por padrão, você deve usar o --allow-child-process para permitir esta operação. Vamos usar o seguinte código para index.js.
const childProcess = require('node:child_process'); childProcess.spawn('node', ['-e', 'require("fs").writeFileSync("./new-file.txt", "Hello, World!")']);
Para executar este snippet com o modelo de permissão habilitado você deve executar index.js usando o seguinte comando:
node --experimental-permission --allow-fs-read . --allow-child-process index.js
? O processo filho não herda o modelo de permissão por padrão, é por isso que o new-file.txt foi criado com sucesso.
Você pode verificar o sinalizador --allow-worker se quiser criar Worker Threads sob este modelo de permissão e --allow-wasi para permitir a criação de instâncias WASI
Temos muitas ferramentas novas para carregar variáveis de ambiente para nosso aplicativo, um método para importar módulos ES de pré-carregamento necessários em nosso código e um novo modelo de permissão para aumentar a segurança de nossos sistemas.
Fique ligado no blog do Node.js, essa equipe está adicionando recursos incríveis em todas as versões! Temos suporte inicial para TypeScript e uma inspeção de rede usando o DevTools na v22.6.0.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3