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
230 lines
13 KiB
Text
230 lines
13 KiB
Text
---
|
||
title: トラブルシューティング
|
||
---
|
||
|
||
## トラブルシューティング
|
||
|
||
開発環境のセットアップ、バージョンアップまたはセルフホスティング中に問題が発生した場合、こちらによくある問題の解決策を示しています。
|
||
|
||
### セルフホスティング
|
||
|
||
#### 初回インストールに`ユーザー "postgres" のパスワード認証失敗`と表示される
|
||
|
||
🚨 **重要: この解決策は新規インストールの場合のみ適用されます** 🚨
|
||
すでに稼働中のTwentyインスタンスに本番データがある場合、これらの手順に従うとデータベースが完全に削除されますので、絶対に従わないでください。
|
||
|
||
Twentyを初めてインストールする際には、デフォルトのデータベースパスワードを変更する必要があるかもしれません。
|
||
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
|
||
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
|
||
初回インストール時に設定されたパスワードはデータベースボリュームに永久に保存されます。 後になってこのパスワードを構成で変更しようとしても、古いボリュームを削除しない限り認証エラーが発生します。データベースが元のパスワードを使用しているためです。
|
||
|
||
⚠️ 警告: 以下のステップを実行すると、データベース内のすべてのデータが完全に削除されます! ⚠️
|
||
これは重要なデータのない新規インストールの場合のみ進めてください。
|
||
|
||
`PG_DATABASE_PASSWORD`を更新するには、以下が必要です:
|
||
|
||
```sh
|
||
# Update the PG_DATABASE_PASSWORD in .env
|
||
docker compose down --volumes
|
||
docker compose up -d
|
||
```
|
||
|
||
#### CR行区切り[Windows]が見つかる
|
||
|
||
これはWindowsの改行文字とgit構成のためです。 次を実行してみてください: 次を実行してみてください: 次を実行してみてください:
|
||
|
||
```
|
||
git config --global core.autocrlf false
|
||
```
|
||
|
||
その後、リポジトリを削除して再クローンします。
|
||
|
||
#### メタデータスキーマが見つかりません
|
||
|
||
Twentyのインストール中に、postgresデータベースを適切なスキーマ、拡張、およびユーザーで準備する必要があります。
|
||
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
|
||
そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
|
||
この準備がうまくいけば、あなたのデータベースに`default`と`metadata`スキーマがあるはずです。
|
||
そうでない場合は、同じコンピュータ上で複数のpostgresインスタンスを実行していないことを確認してください。
|
||
|
||
#### モジュール'twenty-emails' またはその対応する型宣言が見つかりません。
|
||
|
||
データベースの初期化を実行する前に`npx nx run twenty-emails:build`でtwenty-emailsパッケージをビルドする必要があります。
|
||
|
||
#### twenty-xパッケージが見つかりません
|
||
|
||
ルートディレクトリでyarnを実行し、その後 `npx nx server:dev twenty-server`を実行してください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。 それでも動作しない場合は、足りないパッケージを手動でビルドしてみてください。
|
||
|
||
#### 保存時のLintが機能しない
|
||
|
||
Oxc拡張子 (`oxc.oxc-vscode`)がインストールされている場合、これは標準設定で動作するはずです。 もしこれが機能しない場合、vscode設定で以下を追加してみてください(開発コンテナ範囲内で)。
|
||
|
||
```
|
||
"editor.codeActionsOnSave": {
|
||
|
||
"source.fixAll.oxc": "explicit"
|
||
|
||
}
|
||
```
|
||
|
||
#### `npx nx start` または `npx nx start twenty-front` 実行中にメモリエラーが発生
|
||
|
||
`npx nx start` の代わりに、必要なサービスだけを実行してください。 例えば、サーバーで作業している場合は、`npx nx worker twenty-server` のみを実行してください。
|
||
|
||
**うまくいかない場合:**
|
||
WSL 上で `npx nx run twenty-server:start` だけを実行しようとして、以下のメモリエラーで失敗する場合:
|
||
|
||
`FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory`
|
||
|
||
以下のコマンドをターミナルで実行するか、.bashrcプロファイルに追加して自動セットアップします:
|
||
|
||
`export NODE_OPTIONS="--max-old-space-size=8192"`
|
||
|
||
\--max-old-space-size=8192 フラグはNode.jsヒープの上限を8GBに設定します; 使用量はアプリケーションの要求に応じてスケールします。
|
||
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
|
||
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
|
||
参考: https://stackoverflow.com/questions/56982005/where-do-i-set-node-options-max-old-space-size-2048
|
||
|
||
**うまくいかない場合:**
|
||
マシンの RAM を最も消費しているプロセスを調査してください。 **これが機能しない場合:**\
|
||
あなたのマシンのRAMを最も使用しているプロセスを調査してください。 Twentyでは、一部のVScode拡張機能が多くのRAMを使用していることに気付き、一時的に無効化しました。
|
||
|
||
**うまくいかない場合:**
|
||
マシンを再起動すると、ゴーストプロセスのクリーンアップに役立ちます。
|
||
|
||
#### `npx nx start`を実行中にログに謎の[0]や[1]が表示される
|
||
|
||
`npx nx start`コマンドが複数のコマンドを裏で実行しているため、これは予想された挙動です。
|
||
|
||
#### メールが送信されない
|
||
|
||
ほとんどの場合、バックグラウンドで`worker`が動作していないのが原因です。 実行してみてください 実行してみてください 実行してみてください
|
||
|
||
```
|
||
npx nx worker twenty-server
|
||
```
|
||
|
||
#### Microsoft 365アカウントに接続できない
|
||
|
||
ほとんどの場合、管理者があなたのアカウントのMicrosoft 365ライセンスを有効化していないことが原因です。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。 [https://admin.microsoft.com/](https://admin.microsoft.com/Adminportal/Home)を確認してください。
|
||
|
||
エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 エラーコード`AADSTS50020`を受け取った場合、おそらく個人のMicrosoftアカウントを使用しています。 これはまだサポートされていません。 詳細は[こちら](https://learn.microsoft.com/fr-fr/troubleshoot/entra/entra-id/app-integration/error-code-aadsts50020-user-account-identity-provider-does-not-exist)
|
||
|
||
#### `yarn`実行中の警告がコンソールに表示される
|
||
|
||
警告は、`package.json`に明示的に記載されていない追加依存関係の取得を伝えており、破損するエラーがない限り、すべてが期待通りに動作するはずです。
|
||
|
||
#### ログインページにアクセスした際、未認証ユーザーの作業スペースへのアクセスに関するエラーがログに表示される
|
||
|
||
これは予想された挙動で、ログアウト中のユーザーはアイデンティティが確認されていないため未認証です。
|
||
|
||
#### ワーカーが稼働しているかどうかを確認するには?
|
||
|
||
* [webhook-test.com](https://webhook-test.com/)にアクセスし、**Your Unique Webhook URL**をコピーします。
|
||
|
||
<div style={{textAlign: 'center'}}>
|
||
<img src="/images/docs/developers/self-hosting/webhook-test.jpg" alt="Webhookテスト" />
|
||
</div>
|
||
|
||
* Twentyアプリを開き、`/settings`に移動し、画面左下の**Advanced**トグルを有効にします。
|
||
* 新しいWebhookを作成します。
|
||
* **Your Unique Webhook URL**をTwentyの**Endpoint Url**フィールドに貼り付けます。 **Filters**を`Companies`と`Created`に設定します。
|
||
|
||
<div style={{textAlign: 'center'}}>
|
||
<img src="/images/docs/developers/self-hosting/webhook-settings.jpg" alt="Webhook設定" />
|
||
</div>
|
||
|
||
* `/objects/companies`にアクセスし、新しい企業レコードを作成します。
|
||
* [webhook-test.com](https://webhook-test.com/)に戻り、新しい**POSTリクエスト**が受信されたか確認します。
|
||
|
||
<div style={{textAlign: 'center'}}>
|
||
<img src="/images/docs/developers/self-hosting/webhook-test-result.jpg" alt="Webhookテスト結果" />
|
||
</div>
|
||
|
||
* **POSTリクエスト**が受信された場合、あなたのワーカーは正常に稼働しています。 そうでない場合は、ワーカーのトラブルシューティングが必要です。
|
||
|
||
#### フロントエンドが起動に失敗し、エラーTS5042: オプション'プロジェクト'はコマンドライン上でソースファイルと一緒に使用できません
|
||
|
||
例のように`packages/twenty-ui/vite-config.ts`内のチェッカープラグインをコメントアウトします
|
||
|
||
```
|
||
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'],
|
||
},
|
||
}),
|
||
],
|
||
```
|
||
|
||
#### 管理パネルにアクセスできない
|
||
|
||
adminパネルにアクセスするには、データベースコンテナで`UPDATE core."user" SET "canAccessFullAdminPanel" = TRUE WHERE email = 'you@yourdomain.com';`を実行します。
|
||
|
||
### 1クリックでDocker構成
|
||
|
||
#### ログインできない
|
||
|
||
セットアップ後にログインできない場合:
|
||
|
||
1. 次のコマンドを実行してください:
|
||
```bash
|
||
docker exec -it twenty-server-1 yarn
|
||
docker exec -it twenty-server-1 npx nx database:reset --configuration=no-seed
|
||
```
|
||
2. Dockerコンテナを再起動してください:
|
||
```bash
|
||
docker compose down
|
||
docker compose up -d
|
||
```
|
||
|
||
database:resetコマンドはデータベースを完全に消去し、最初から再構築します。
|
||
|
||
#### リバースプロキシの背後での接続問題
|
||
|
||
リバースプロキシの背後でTwentyを実行し、接続問題が発生している場合:
|
||
|
||
1. **SERVER_URLの確認:**
|
||
|
||
`.env`ファイルの`SERVER_URL`が外部アクセスURLと一致するようにし、SSLが有効なら`https`を含めます。
|
||
|
||
2. **リバースプロキシ設定の確認:**
|
||
|
||
* リバースプロキシがTwentyサーバーへのリクエストを正しく転送していることを確認してください。
|
||
* `X-Forwarded-For`や`X-Forwarded-Proto`といったヘッダーが正しく設定されていることを確認してください。
|
||
|
||
3. **サービスの再起動:**
|
||
|
||
変更を行った後に、リバースプロキシとTwentyコンテナの両方を再起動します。
|
||
|
||
#### 画像のアップロード時にエラー - アクセス許可が拒否されました
|
||
|
||
ホストでのデータフォルダの所有権をrootから他のユーザーとグループに切り替えると、この問題が解決されます。
|
||
|
||
## サポートを受ける
|
||
|
||
このガイドにカバーされていない問題がある場合:
|
||
|
||
* ログを確認:
|
||
|
||
コンテナログを表示してエラーメッセージを確認します:
|
||
|
||
```bash
|
||
docker compose logs
|
||
```
|
||
|
||
* コミュニティサポート:
|
||
|
||
[Twentyコミュニティ](https://github.com/twentyhq/twenty/issues)または[サポートチャンネル](https://discord.gg/cx5n4Jzs57)に連絡してサポートを受けてください。
|