fix: amélioration du chargement des variables d'environnement pour VAULT_CONFS_DIR
- Ajout d'un système de chargement robuste des variables d'environnement - Recherche automatique des fichiers .env dans plusieurs emplacements - Rechargement des variables à chaque appel de syncLocalFiles() - Ajout de logs pour indiquer quel fichier .env a été chargé - Documentation complète avec section de dépannage - Solutions pour les problèmes courants avec VAULT_CONFS_DIR Résout le problème où VAULT_CONFS_DIR n'était pas pris en compte quand le fichier .env n'était pas dans le répertoire courant du projet.
This commit is contained in:
parent
e525d0b29c
commit
b7c53069db
@ -44,6 +44,18 @@ VAULT_CONFS_DIR=../confs # Dossier de destination pour les fichiers synchronis
|
|||||||
| `VAULT_CONFS_DIR` | Dossier de destination pour les fichiers synchronisés | ❌ | `../confs` |
|
| `VAULT_CONFS_DIR` | Dossier de destination pour les fichiers synchronisés | ❌ | `../confs` |
|
||||||
| `VAULT_URL` | URL de l'API Vault | ❌ | `https://vault.4nkweb.com:6666` |
|
| `VAULT_URL` | URL de l'API Vault | ❌ | `https://vault.4nkweb.com:6666` |
|
||||||
|
|
||||||
|
#### Chargement automatique des variables d'environnement
|
||||||
|
|
||||||
|
Le SDK charge automatiquement les variables d'environnement depuis plusieurs emplacements possibles :
|
||||||
|
|
||||||
|
1. **Répertoire courant** : `.env`
|
||||||
|
2. **Répertoire parent** : `../.env`
|
||||||
|
3. **Répertoire grand-parent** : `../../.env`
|
||||||
|
4. **Répertoire de travail** : `process.cwd()/.env`
|
||||||
|
5. **Variables système** : Variables d'environnement du système
|
||||||
|
|
||||||
|
Le SDK recherche ces fichiers dans l'ordre et utilise le premier trouvé. Cette approche garantit que le SDK fonctionne même si le fichier `.env` n'est pas dans le répertoire courant du projet qui l'utilise.
|
||||||
|
|
||||||
### Configuration manuelle
|
### Configuration manuelle
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
@ -229,6 +241,67 @@ const syncResult = await client.syncLocalFiles({
|
|||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 🔧 Dépannage
|
||||||
|
|
||||||
|
### Problèmes courants avec les variables d'environnement
|
||||||
|
|
||||||
|
#### Le paramètre `VAULT_CONFS_DIR` n'est pas pris en compte
|
||||||
|
|
||||||
|
**Problème** : Le SDK utilise toujours `../confs` au lieu de votre dossier personnalisé.
|
||||||
|
|
||||||
|
**Solutions** :
|
||||||
|
1. **Vérifiez l'emplacement du fichier `.env`** :
|
||||||
|
```bash
|
||||||
|
# Le SDK recherche dans cet ordre :
|
||||||
|
ls -la .env # Répertoire courant
|
||||||
|
ls -la ../.env # Répertoire parent
|
||||||
|
ls -la ../../.env # Répertoire grand-parent
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Créez un fichier `.env` dans le bon répertoire** :
|
||||||
|
```bash
|
||||||
|
# Dans le répertoire de votre projet
|
||||||
|
echo "VAULT_CONFS_DIR=./mon-dossier-confs" >> .env
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Utilisez le paramètre direct** :
|
||||||
|
```typescript
|
||||||
|
const syncResult = await client.syncLocalFiles({
|
||||||
|
environment: 'dev',
|
||||||
|
localDir: './mon-dossier-confs', // Priorité sur VAULT_CONFS_DIR
|
||||||
|
verbose: true
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Variables d'environnement non chargées
|
||||||
|
|
||||||
|
**Problème** : Le SDK ne trouve pas votre fichier `.env`.
|
||||||
|
|
||||||
|
**Solutions** :
|
||||||
|
1. **Vérifiez les logs** : Le SDK affiche quel fichier `.env` il a chargé
|
||||||
|
2. **Placez le fichier `.env` dans le bon répertoire** selon l'ordre de priorité
|
||||||
|
3. **Utilisez les variables système** :
|
||||||
|
```bash
|
||||||
|
export VAULT_CONFS_DIR=./mon-dossier-confs
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Erreur "Variables d'environnement requises"
|
||||||
|
|
||||||
|
**Problème** : `VAULT_USER`, `VAULT_KEY`, ou `VAULT_ENV` manquants.
|
||||||
|
|
||||||
|
**Solutions** :
|
||||||
|
1. **Ajoutez les variables manquantes** dans votre `.env`
|
||||||
|
2. **Vérifiez la syntaxe** du fichier `.env` (pas d'espaces autour du `=`)
|
||||||
|
3. **Utilisez la configuration manuelle** :
|
||||||
|
```typescript
|
||||||
|
const client = new SecureVaultClient({
|
||||||
|
baseUrl: 'https://vault.4nkweb.com:6666',
|
||||||
|
userId: 'demo_user_001',
|
||||||
|
vaultKey: 'your-key',
|
||||||
|
verifySsl: false
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
## 📚 API Reference
|
## 📚 API Reference
|
||||||
|
|
||||||
### Classes principales
|
### Classes principales
|
||||||
|
@ -137,7 +137,8 @@ export class SecureVaultClient {
|
|||||||
|
|
||||||
constructor(config?: VaultConfig) {
|
constructor(config?: VaultConfig) {
|
||||||
// Charger les variables d'environnement depuis .env
|
// Charger les variables d'environnement depuis .env
|
||||||
dotenv.config();
|
// Essayer plusieurs emplacements pour le fichier .env
|
||||||
|
this._loadEnvironmentVariables();
|
||||||
|
|
||||||
// Si pas de config fournie, utiliser les variables d'environnement
|
// Si pas de config fournie, utiliser les variables d'environnement
|
||||||
if (!config) {
|
if (!config) {
|
||||||
@ -369,6 +370,9 @@ export class SecureVaultClient {
|
|||||||
* Les fichiers existants dans confs/ sont toujours écrasés pour avoir le contenu le plus récent
|
* Les fichiers existants dans confs/ sont toujours écrasés pour avoir le contenu le plus récent
|
||||||
*/
|
*/
|
||||||
async syncLocalFiles(options: SyncOptions): Promise<SyncResult> {
|
async syncLocalFiles(options: SyncOptions): Promise<SyncResult> {
|
||||||
|
// Recharger les variables d'environnement au cas où elles auraient changé
|
||||||
|
this._loadEnvironmentVariables();
|
||||||
|
|
||||||
// Récupérer le dossier de destination depuis les variables d'environnement
|
// Récupérer le dossier de destination depuis les variables d'environnement
|
||||||
const defaultConfsDir = process.env['VAULT_CONFS_DIR'] || '../confs';
|
const defaultConfsDir = process.env['VAULT_CONFS_DIR'] || '../confs';
|
||||||
|
|
||||||
@ -607,6 +611,48 @@ export class SecureVaultClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Charge les variables d'environnement depuis plusieurs emplacements possibles
|
||||||
|
*/
|
||||||
|
private _loadEnvironmentVariables(): void {
|
||||||
|
const possibleEnvPaths = [
|
||||||
|
'.env', // Répertoire courant
|
||||||
|
'../.env', // Répertoire parent
|
||||||
|
'../../.env', // Répertoire grand-parent
|
||||||
|
path.join(__dirname, '.env'), // Répertoire du SDK
|
||||||
|
path.join(__dirname, '../.env'), // Parent du SDK
|
||||||
|
path.join(__dirname, '../../.env'), // Grand-parent du SDK
|
||||||
|
path.join(process.cwd(), '.env'), // Répertoire de travail
|
||||||
|
];
|
||||||
|
|
||||||
|
let envLoaded = false;
|
||||||
|
for (const envPath of possibleEnvPaths) {
|
||||||
|
try {
|
||||||
|
if (fs.existsSync(envPath)) {
|
||||||
|
const result = dotenv.config({ path: envPath });
|
||||||
|
if (!result.error) {
|
||||||
|
console.log(`📄 Variables d'environnement chargées depuis: ${envPath}`);
|
||||||
|
envLoaded = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// Ignorer les erreurs et continuer avec le chemin suivant
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si aucun fichier .env n'a été trouvé, essayer le chargement par défaut
|
||||||
|
if (!envLoaded) {
|
||||||
|
try {
|
||||||
|
dotenv.config();
|
||||||
|
console.log('📄 Variables d\'environnement chargées depuis .env par défaut');
|
||||||
|
} catch (error) {
|
||||||
|
console.log('⚠️ Aucun fichier .env trouvé, utilisation des variables système uniquement');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Met à jour le fichier .env avec la nouvelle clé
|
* Met à jour le fichier .env avec la nouvelle clé
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user