mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 13:37:22 +00:00
## Summary Fully replaces ESLint with OxLint across the entire monorepo: - **Replaced all ESLint configs** (`eslint.config.mjs`) with OxLint configs (`.oxlintrc.json`) for every package: `twenty-front`, `twenty-server`, `twenty-emails`, `twenty-ui`, `twenty-shared`, `twenty-sdk`, `twenty-zapier`, `twenty-docs`, `twenty-website`, `twenty-apps/*`, `create-twenty-app` - **Migrated custom lint rules** from ESLint plugin format to OxLint JS plugin system (`@oxlint/plugins`), including `styled-components-prefixed-with-styled`, `no-hardcoded-colors`, `sort-css-properties-alphabetically`, `graphql-resolvers-should-be-guarded`, `rest-api-methods-should-be-guarded`, `max-consts-per-file`, and Jotai-related rules - **Migrated custom rule tests** from ESLint `RuleTester` + Jest to `oxlint/plugins-dev` `RuleTester` + Vitest - **Removed all ESLint dependencies** from `package.json` files and regenerated lockfiles - **Updated Nx targets** (`lint`, `lint:diff-with-main`, `fmt`) in `nx.json` and per-project `project.json` to use `oxlint` commands with proper `dependsOn` for plugin builds - **Updated CI workflows** (`.github/workflows/ci-*.yaml`) — no more ESLint executor - **Updated IDE setup**: replaced `dbaeumer.vscode-eslint` with `oxc.oxc-vscode` extension, configured `source.fixAll.oxc` and format-on-save with Prettier - **Replaced all `eslint-disable` comments** with `oxlint-disable` equivalents across the codebase - **Updated docs** (`twenty-docs`) to reference OxLint instead of ESLint - **Renamed** `twenty-eslint-rules` package to `twenty-oxlint-rules` ### Temporarily disabled rules (tracked in `OXLINT_MIGRATION_TODO.md`) | Rule | Package | Violations | Auto-fixable | |------|---------|-----------|-------------| | `twenty/sort-css-properties-alphabetically` | twenty-front | 578 | Yes | | `typescript/consistent-type-imports` | twenty-server | 3814 | Yes | | `twenty/max-consts-per-file` | twenty-server | 94 | No | ### Dropped plugins (no OxLint equivalent) `eslint-plugin-project-structure`, `lingui/*`, `@stylistic/*`, `import/order`, `prefer-arrow/prefer-arrow-functions`, `eslint-plugin-mdx`, `@next/eslint-plugin-next`, `eslint-plugin-storybook`, `eslint-plugin-react-refresh`. Partial coverage for `jsx-a11y` and `unused-imports`. ### Additional fixes (pre-existing issues exposed by merge) - Fixed `EmailThreadPreview.tsx` broken import from main rename (`useOpenEmailThreadInSidePanel`) - Restored truthiness guard in `getActivityTargetObjectRecords.ts` - Fixed `AgentTurnResolver` return types to match entity (virtual `fileMediaType`/`fileUrl` are resolved via `@ResolveField()`) ## Test plan - [x] `npx nx lint twenty-front` passes - [x] `npx nx lint twenty-server` passes - [x] `npx nx lint twenty-docs` passes - [x] Custom oxlint rules validated with Vitest: `npx nx test twenty-oxlint-rules` - [x] `npx nx typecheck twenty-front` passes - [x] `npx nx typecheck twenty-server` passes - [x] CI workflows trigger correctly with `dependsOn: ["twenty-oxlint-rules:build"]` - [x] IDE linting works with `oxc.oxc-vscode` extension
223 lines
9.9 KiB
Text
223 lines
9.9 KiB
Text
---
|
|
title: Résolution des problèmes
|
|
---
|
|
|
|
## Résolution des problèmes
|
|
|
|
Si vous rencontrez un problème lors de la configuration de l'environnement pour le développement, la mise à niveau de votre instance ou l'auto-hébergement, voici quelques solutions pour les problèmes courants.
|
|
|
|
### Auto-hébergement
|
|
|
|
#### La première installation entraîne l'erreur `l'authentification du mot de passe a échoué pour l'utilisateur "postgres"`
|
|
|
|
🚨 **IMPORTANT : Cette solution est UNIQUEMENT pour les nouvelles installations** 🚨
|
|
Si vous avez une instance Twenty existante avec des données de production, **NE SUIVEZ PAS** ces étapes, car elles supprimeront définitivement votre base de données !
|
|
|
|
Lors de l'installation de Twenty pour la première fois, vous pouvez vouloir changer le mot de passe par défaut de la base de données.
|
|
Le mot de passe que vous définissez lors de la première installation est stocké de façon permanente dans le volume de la base de données. Si vous essayez ensuite de changer ce mot de passe dans votre configuration sans supprimer l'ancien volume, vous obtiendrez des erreurs d'authentification car la base de données utilise toujours le mot de passe original.
|
|
|
|
⚠️ AVERTISSEMENT : Les étapes suivantes SUPPRIMERONT DÉFINITIVEMENT toutes les données de la base de données ! ⚠️
|
|
N'avancez que s'il s'agit d'une nouvelle installation sans données importantes.
|
|
|
|
Pour mettre à jour le `PG_DATABASE_PASSWORD`, vous devez :
|
|
|
|
```sh
|
|
# Update the PG_DATABASE_PASSWORD in .env
|
|
docker compose down --volumes
|
|
docker compose up -d
|
|
```
|
|
|
|
#### Retours à la ligne CR trouvés [Windows]
|
|
|
|
Cela est dû aux caractères de saut de ligne de Windows et à la configuration de git. Essayez de lancer :
|
|
|
|
```
|
|
git config --global core.autocrlf false
|
|
```
|
|
|
|
Ensuite, supprimez le dépôt et clonez-le de nouveau.
|
|
|
|
#### Schéma de métadonnées manquant
|
|
|
|
Pendant l'installation de Twenty, vous devez approvisionner votre base de données postgres avec les bons schémas, extensions et utilisateurs.
|
|
Si vous réussissez cet approvisionnement, vous devriez avoir des schémas `default` et `metadata` dans votre base de données.
|
|
Sinon, assurez-vous de ne pas avoir plus d'une instance postgres fonctionnant sur votre ordinateur.
|
|
|
|
#### Impossible de trouver le module 'twenty-emails' ou les déclarations de type correspondantes.
|
|
|
|
Vous devez construire le package `twenty-emails` avant de lancer l'initialisation de la base de données avec `npx nx run twenty-emails:build`
|
|
|
|
#### Package twenty-x manquant
|
|
|
|
Assurez-vous d'exécuter yarn dans le répertoire racine, puis d'exécuter `npx nx server:dev twenty-server`. Si cela ne fonctionne toujours pas, essayez de construire le package manquant manuellement.
|
|
|
|
#### Lint à l'enregistrement ne fonctionne pas
|
|
|
|
Cela devrait fonctionner directement avec l'extension Oxc (`oxc.oxc-vscode`) installée. Si cela ne fonctionne pas, essayez d'ajouter ceci aux paramètres de votre vscode (dans le champ du conteneur de développement) :
|
|
|
|
```
|
|
"editor.codeActionsOnSave": {
|
|
|
|
"source.fixAll.oxc": "explicit"
|
|
|
|
}
|
|
```
|
|
|
|
#### Pendant l'exécution de `npx nx start` ou `npx nx start twenty-front`, une erreur de mémoire est renvoyée
|
|
|
|
Lancez uniquement les services dont vous avez besoin, au lieu de `npx nx start`. Par exemple, si vous travaillez sur le serveur, lancez seulement `npx nx worker twenty-server`
|
|
|
|
**Si cela ne fonctionne pas :**
|
|
Si vous avez essayé de lancer uniquement `npx nx run twenty-server:start` sur WSL et que cela échoue avec l'erreur de mémoire ci-dessous :
|
|
|
|
`ERREUR FATALE : Les compactages inefficaces près de la limite du tas Allocation échouée - tas JavaScript sans mémoire`
|
|
|
|
Une solution de contournement consiste à exécuter la commande ci-dessous dans le terminal ou à l'ajouter au profil .bashrc pour la configurer automatiquement :
|
|
|
|
`export NODE_OPTIONS="--max-old-space-size=8192"`
|
|
|
|
L'option --max-old-space-size=8192 fixe une limite supérieure de 8 Go pour le tas Node.js ; l'utilisation s'adapte à la demande de l'application.
|
|
Référence : https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
|
|
|
|
**Si cela ne fonctionne pas :**
|
|
Examinez quels processus consomment le plus de RAM sur votre machine. Chez Twenty, nous avons remarqué que certaines extensions de VScode consommaient beaucoup de RAM, nous les désactivons donc temporairement.
|
|
|
|
**Si cela ne fonctionne pas :**
|
|
Le redémarrage de votre machine aide à nettoyer les processus fantômes.
|
|
|
|
#### Pendant l'exécution de `npx nx start`, il y a des [0] et [1] étranges dans les journaux
|
|
|
|
C'est attendu car la commande `npx nx start` exécute plus de commandes en arrière-plan
|
|
|
|
#### Aucun e-mail n'est envoyé
|
|
|
|
La plupart du temps, c'est parce que le `worker` ne fonctionne pas en arrière-plan. Essayez de lancer
|
|
|
|
```
|
|
npx nx worker twenty-server
|
|
```
|
|
|
|
#### Impossible de connecter mon compte Microsoft 365
|
|
|
|
La plupart du temps, c'est parce que votre administrateur n'a pas activé la licence Microsoft 365 pour votre compte. Vérifiez [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home).
|
|
|
|
Si vous avez un code d'erreur `AADSTS50020`, cela signifie probablement que vous utilisez un compte personnel Microsoft. Cela n'est pas encore pris en charge. Plus d'informations [ici](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
|
|
|
|
#### Des avertissements apparaissent dans la console pendant l'exécution de `yarn`
|
|
|
|
Les avertissements informent du tirage de dépendances supplémentaires qui ne sont pas explicitement spécifiées dans `package.json`, donc tant qu'aucune erreur bloquante n'apparaît, tout devrait fonctionner comme prévu.
|
|
|
|
#### Lorsque l'utilisateur accède à la page de connexion, une erreur concernant des utilisateurs non autorisés essayant d'accéder à l'espace de travail apparaît dans les journaux
|
|
|
|
C'est attendu car l'utilisateur est non autorisé lorsqu'il est déconnecté puisque son identité n'est pas vérifiée.
|
|
|
|
#### Comment vérifier si votre worker fonctionne ?
|
|
|
|
* Allez sur [webhook-test.com](https://webhook-test.com/) et copiez **Votre URL Webhook Unique**.
|
|
|
|
<div style={{textAlign: 'center'}}>
|
|
<img src="/images/docs/developers/self-hosting/webhook-test.jpg" alt="Test de Webhook" />
|
|
</div>
|
|
|
|
* Ouvrez votre application Twenty, naviguez jusqu'à `/settings`, et activez le bouton **Avancé** en bas à gauche de l'écran.
|
|
* Créez un nouveau webhook.
|
|
* Collez **Votre URL Webhook Unique** dans le champ **URL de l'Endpoint** de Twenty. Réglez les **Filtres** sur `Sociétés` et `Créé`.
|
|
|
|
<div style={{textAlign: 'center'}}>
|
|
<img src="/images/docs/developers/self-hosting/webhook-settings.jpg" alt="Paramètres du Webhook" />
|
|
</div>
|
|
|
|
* Accédez à `/objects/companies` et créez un nouvel enregistrement de société.
|
|
* Retournez sur [webhook-test.com](https://webhook-test.com/) et vérifiez si une nouvelle **requête POST** a été reçue.
|
|
|
|
<div style={{textAlign: 'center'}}>
|
|
<img src="/images/docs/developers/self-hosting/webhook-test-result.jpg" alt="Résultat du test du Webhook" />
|
|
</div>
|
|
|
|
* Si une **requête POST** est reçue, votre worker fonctionne avec succès. Sinon, vous devez résoudre les problèmes de votre worker.
|
|
|
|
#### Le front-end échoue à démarrer et renvoie l'erreur TS5042 : L'option 'project' ne peut pas être mélangée avec les fichiers sources en ligne de commande
|
|
|
|
Commentez le plugin de vérification dans `packages/twenty-ui/vite-config.ts` comme dans l'exemple ci-dessous
|
|
|
|
```
|
|
plugins: [
|
|
react({ jsxImportSource: 'react' }),
|
|
tsconfigPaths(),
|
|
svgr(),
|
|
dts(dtsConfig),
|
|
// checker(checkersConfig),
|
|
wyw({
|
|
include: [
|
|
'**/OverflowingTextWithTooltip.tsx',
|
|
'**/Chip.tsx',
|
|
'**/Tag.tsx',
|
|
'**/Avatar.tsx',
|
|
'**/AvatarChip.tsx',
|
|
],
|
|
babelOptions: {
|
|
presets: ['@babel/preset-typescript', '@babel/preset-react'],
|
|
},
|
|
}),
|
|
],
|
|
```
|
|
|
|
#### Panneau d'administration inaccessible
|
|
|
|
Exécutez `UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'vous@votredomaine.com';` dans le conteneur de base de données pour obtenir l'accès au panneau d'administration.
|
|
|
|
### Docker compose en un clic
|
|
|
|
#### Impossible de se connecter
|
|
|
|
Si vous ne pouvez pas vous connecter après la configuration :
|
|
|
|
1. Exécutez les commandes suivantes :
|
|
```bash
|
|
docker exec -it twenty-server-1 yarn
|
|
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
|
|
```
|
|
2. Redémarrez les conteneurs Docker :
|
|
```bash
|
|
docker compose down
|
|
docker compose up -d
|
|
```
|
|
|
|
Notez que la commande database:reset effacera complètement votre base de données et la recréera à partir de zéro.
|
|
|
|
#### Problèmes de connexion derrière un proxy inverse
|
|
|
|
Si vous exécutez Twenty derrière un proxy inverse et rencontrez des problèmes de connexion :
|
|
|
|
1. **Vérifiez SERVER_URL :**
|
|
|
|
Assurez-vous que `SERVER_URL` dans votre fichier `.env` correspond à l'URL d'accès externe, incluant `https` si SSL est activé.
|
|
|
|
2. **Vérifiez les paramètres du proxy inverse :**
|
|
|
|
* Confirmez que votre proxy inverse transfère correctement les requêtes au serveur Twenty.
|
|
* Assurez-vous que les en-têtes comme `X-Forwarded-For` et `X-Forwarded-Proto` sont correctement configurés.
|
|
|
|
3. **Redémarrez les services :**
|
|
|
|
Après avoir apporté des modifications, redémarrez à la fois le proxy inverse et les conteneurs Twenty.
|
|
|
|
#### Erreur lors du téléchargement d'une image - permission refusée
|
|
|
|
Changer la propriété du dossier de données sur l'hôte de root à un autre utilisateur et groupe résout ce problème.
|
|
|
|
## Obtenir de l'aide
|
|
|
|
Si vous rencontrez des problèmes non couverts par ce guide :
|
|
|
|
* Vérifiez les journaux :
|
|
|
|
Consultez les journaux de conteneur pour les messages d'erreur :
|
|
|
|
```bash
|
|
docker compose logs
|
|
```
|
|
|
|
* Support communautaire :
|
|
|
|
Contactez la [communauté Twenty](https://github.com/twentyhq/twenty/issues) ou les [canaux de support](https://discord.gg/cx5n4Jzs57) pour obtenir de l'aide.
|