


Introduction aux méthodes de traitement des fichiers de configuration nodejs
Cet article vous apporte une introduction à la méthode de traitement des fichiers de configuration nodejs. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
De manière générale : une bonne configuration de projet doit répondre aux conditions suivantes :
Environnement de dépendance : La configuration dépend du fonctionnement spécifique Environnement. Lecture des fichiers correspondants
Séparation de code : Les éléments de configuration peuvent être lus non seulement à partir des fichiers de configuration, mais également à partir des variables d'environnement, ce qui rend les éléments de configuration sûrs et confidentiels. à partir du code
Facile à utiliser : les éléments de configuration doivent être configurés de manière hiérarchique pour aider à trouver des entrées et à conserver d'énormes fichiers de configuration, et doivent être faciles à organiser. Et ceux qui le sont facile à obtenir, comme
json
Structure
Lorsque plusieurs personnes développent des projets nodejs, si le plan de configuration n'est pas planifié, des problèmes avec le fichier de configuration seront facilement exposés.
Pain Points
Dans le projet de développement de nodejs, j'ai rencontré trois points douloureux
Différents environnements de déploiement : développement, Les différences dans les environnements de test et de production conduisent à des configurations différentes
Différences dans les environnements de développement : Si la configuration de l'environnement de développement du développeur est différente, il y aura différents éléments de configuration pour le même fichier de configuration, la soumission de contenus différents du même fichier peut facilement provoquer des conflits git et affecter les mises à jour de soumission git
Configuration sécurisée : Certaines configurations ne doivent pas être enregistrées en clair texte dans le code du projet, tel que Mot de passe de la base de données
Solution
Différents environnements de déploiement
Pour différents environnements de déploiement, il est relativement facile à résoudre. Créez un fichier de configuration pour l'environnement correspondant, tel que :
Configuration de l'environnement de développement : developmentConfig.js
Configuration de l'environnement de test : testConfig.js
Configuration de l'environnement de production : productionConfig.js
Créez un autre config.js
fichier de configuration comme entrée pour obtenir la configuration, comme suit :
module.exports = require(`./${process.env.NODE_ENV}Config.js`)
Lorsque vous citez la configuration, citez simplement config.js
C'est tout.
Exécutez la commande comme suit :
NODE_ENV=development node index.js
Différents environnements de développement
Pour différents environnements de développement, chacun developmentConfig.js
est différent. Vous ne pouvez pas demander aux autres. cette La configuration est la même que la vôtre, donc le projet sera trop dur.
Nous pouvons ajouter developmentConfig.js
à .gitignore
pour le séparer du projet, puis expliquer comment configurer readme.md
dans developmentConfig.js
.
Il est préférable de créer un developmentConfig.example.js
et de modifier les éléments de configuration pour qu'ils correspondent à votre propre configuration de développement après avoir copié la description du document dans developmentConfig.js
.
Configuration sécurisée
Pour certains éléments de configuration ayant des exigences de sécurité élevées dans le projet, nous devons les séparer du fichier de configuration, qui ne peut être obtenu que dans le processus en cours. le fichier de configuration est alors Pour lire les valeurs des éléments de configuration du processus, comme le mot de passe de la base de données, la méthode générale est la suivante : productionConfig.js
module.exports = { database: { user: process.env.user || 'root', password: process.env.password || 'yfwzx2019' } }
La manière la plus secrète est la suivante vous ne savez même pas que j'ai remplacé l'élément de configuration par des variables d'environnement. Valeur, par exemple :
productionConfig.js
module.exports = { database: { user: 'root', password: 'yfwzx2019' } }
Lorsque la plupart des gens auront cette configuration, ils réfléchiront. que le mot de passe du compte de base de données est root
, yfwzx2019
. En fait, il sera finalement modifié par la variable d'environnement. La couverture des valeurs est la suivante :
node index.js --database_user=combine --database_password=tencent2019
Bien sûr, quelques traitements sont nécessaires avant de pouvoir être configuré ainsi. Fonctionnement pratique Maintenant que nous avons le plan, introduisons d'abord le module de configuration nodejs suivant module rc module rc Utilisation du le module nécessite la définition A rc
, choisissez le module appname
car il lira autant de configuration que possible à partir des endroits liés au nommage rc
. appname
Il est également très simple à utiliser. Première instance d'une configuration rc :
var conf = require('rc')(appname, defaultConfigObject)
Ensuite, il fusionnera les configurations de la liste suivante, et la priorité sera fusionnée dans order : - Paramètres de ligne de commande : --user=root ou affectation de formulaire d'objet--database.user=root
- Variables d'environnement : Les Le préfixe de la variable d'environnement est ${appname}_ La variable appname_user=root a la forme d'objet appname_database__user=root
- Fichier spécifié : node index.js --config file
- Fichier de configuration par défaut : depuis
et d'autres répertoires pour rechercher des fichiers
./ ../ ../../ ../../../
🎜>.${appname}rc
$HOME/.${appname}rc
$HOME/.${appname}/config
$HOME/.config/${appname}
-
J'ai fait une démo pour la rendre plus intuitive
$HOME/.config/${appname}/config
var conf = require('rc')('development', { port: 3000, }) console.log(JSON.stringify(conf)) // 1、直接运行 // node index.js // { port: 3000, _: [] } // 2、加上命令行参数 // node index.js --port=4000 --database.user=root // { port: 4000, _: [], database: { user: 'root' } } // 3、加上环境变量 // development_port=5000 development_database__password=yfwzx2019 node index.js // {"port":"5000","database":{"password":"yfwzx2019"},"_":[]} // 4、指定配置文件:根目录建一个配置文件 config.json, 内容如下 // { // "port": "6000" // } // node index.js --config=config.json // {"port":"6000","_":[],"config":"config.json","configs":["config.json"]} // 5、默认读取 ${appname}rc 文件:根目录见一个配置文件 .developmentrc 内容如下: // { // "port": 7000 // } // node index.js // {"port":7000,"_":[],"configs":[".developmentrc"],"config":".developmentrc"} // 6、 5 和4 一起运行 // node index.js --config=config.json // {"port":"6000","_":[],"config":"config.json","configs":[".developmentrc","config.json"]}
Copier après la connexion具体操作
看了 rc 模块,可以满足我们的需求,我们可以配置公共的配置项,也可以隐秘的覆盖我们的配置项。
创建配置文件目录,添加配置文件
├── config │ ├── .developmentrc.example │ ├── .productionrc │ ├── .testrc │ └── index.js
Copier après la connexion其中 .developmentrc.example 是开发环境的例子,然后开发人员参考建 .developmentrc 文件, index.js 是配置入口文件,内容如下:
let rc = require('rc') // 因为 rc 是从 process.cwd() 向上查找 .appnamerc 文件的,我们在根目录 config 文件夹里面的是找不到的,要改变工作路径到当前,再改回去 var originCwd = process.cwd() process.chdir(__dirname) var conf = rc(process.env.NODE_ENV || 'production', { // 默认的共同配置 origin: 'default', baseUrl: 'http://google.com/api', enableProxy: true, port: 3000, database: { user: 'root', password: 'yfwzx2019' } }) process.chdir(originCwd) module.exports = conf
Copier après la connexion关于部署环境的不同,获取配置通过设置环境变量
NODE_ENV
来适配关于开发环境的不同,在
.gitignore
添加config/.developmentrc
,项目代码去掉开发环境配置.developmentrc
,开发人员根据.developmentrc.example
建直接的开发配置.developmentrc
关于安全地配置,通过添加环境变量覆盖默认值,可以安全隐秘地覆盖配置项,比如:
NODE_ENV=production node index.js --database.password=tencent2019
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds





Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Le choix d'une image Docker pour Node peut sembler trivial, mais la taille et les vulnérabilités potentielles de l'image peuvent avoir un impact significatif sur votre processus CI/CD et votre sécurité. Alors, comment choisir la meilleure image Docker Node.js ?

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Node 19 est officiellement publié. Cet article vous donnera une explication détaillée des 6 fonctionnalités majeures de Node.js 19. J'espère qu'il vous sera utile !

Comment Node.js fait-il le GC (garbage collection) ? L’article suivant vous guidera à travers cela.

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".
