"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Arquivos Node.js v .env, módulos de importação e modelo de permissão

Arquivos Node.js v .env, módulos de importação e modelo de permissão

Publicado em 2024-08-22
Navegar:227

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

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!

Os arquivos de configuração INI

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.

Carregando NODE_OPTIONS

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é-carregar módulos ES

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.

Modelo de permissão

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.

Permissões do sistema de arquivos

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

Processo filho

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.

Mais opções

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

Conclusão

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.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/cloudx/nodejs-v20-env-files-import-modules-and-permission-model-2fd9?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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