composer.json discovery fails in VS Code remote
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Bắt đầu với src/options.mjs, tại phần tìm kiếm composer.json được đề cập trong issue, sau đó lần theo cách src/parser.mjs truyền ngữ cảnh của tệp PHP. Tái hiện sự khác biệt giữa môi trường từ xa của CLI và VS Code, đồng thời xác minh rằng việc định dạng src/a.php có thể tìm thấy composer.json ở thư mục gốc của workspace mà vẫn giữ nguyên hành vi hiện có của CLI.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
In my (admittedly specific) use case the plugin is unable to find composer.json, which is plainly present in the root of the workspace.
Environment
Running VS Code with a devcontainer in Rancher Desktop. Prettier plugin is running inside the container.
prettier and @prettier/plugin-php are installed locally inside node_modules and the VS Code plugin uses the local installation.
Settings:
"phpVersion": "composer"
Filesystem layout:
- /workspaces/myproject/
- composer.json
- .prettierrc
- node_modules/
- src/
- a.php
Result
When run on src/a.php through VS Code, the plugin fails.
["ERROR" - 9:22:26 AM] Error formatting document.
["ERROR" - 9:22:26 AM] Could not determine PHP version from composer; Could not find composer.json
Error: Could not determine PHP version from composer; Could not find composer.json
at resolvePhpVersion (file:///workspaces/myproject/node_modules/@prettier/plugin-php/src/options.mjs:95:13)
at Object.parse (file:///workspaces/myproject/node_modules/@prettier/plugin-php/src/parser.mjs:11:3)
at parse5 (file:///workspaces/myproject/node_modules/prettier/index.mjs:16731:24)
at async coreFormat (file:///workspaces/myproject/node_modules/prettier/index.mjs:17287:25)
at async formatWithCursor (file:///workspaces/myproject/node_modules/prettier/index.mjs:17504:14)
at async Module.format2 (file:///workspaces/myproject/node_modules/prettier/index.mjs:19051:25)
When doing the same thing through the CLI, not the VS Code plugin, everything works as expected.
Cause
A little bit of digging turns up the root cause here: https://github.com/prettier/plugin-php/blob/0c883a49850281077218007322f6149f853b2015/src/options.mjs#L23
In my environment, prettier is run in this directory: /vscode/vscode-server/bin/linux-x64/360a4e4fd251bfce169a4ddf857c7d25d1ad40da
The recursive search for composer.json upwards from process.cwd() fails.
I don't feel qualified to suggest a solution but maybe search from the target file's location upwards, instead of the process' working dir?
- Ngôn ngữ chính
- PHP
- Star
- 1.9k
- Fork
- 139
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của prettier/plugin-php
-
PHP 8.3 not allowed in options? Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 62/100
prettier/plugin-php#2416 · 2 bình luận · 6 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 64/100
prettier/plugin-php#2498 ·
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 55/100
prettier/plugin-php#2495 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
prettier/plugin-php#2494 · 1 bình luận ·
-
strange format issue Đang mở
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 48/100
prettier/plugin-php#2490 ·
Tất cả issue của prettier/plugin-php
Issue tương tự
-
Bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
Automattic/safe-publish#594 ·
-
needs-triage Platform(Default)
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
HttpClient
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
symfony/symfony-docs#23092 ·
-
sync-en
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
-
sync-en
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100