VS Code Tasks执行TypeScript organizeImports命令报错求助
VS Code tasks.json配置TypeScript整理导入命令报错
你的配置内容
{ "version": "2.0.0", "tasks": [ { "label": "the task", "type": "shell", "command": "${command:typescript.organizeImports}", }, ] }
报错信息
TypeScript Server Error (5.6.3) scriptInfo.isOrphan is not a function TypeError: scriptInfo.isOrphan is not a function at _ProjectService.tryGetDefaultProjectForFile (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:186446:38) at _ProjectService.tryGetDefaultProjectForEnsuringConfiguredProjectForFile (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:186465:17) at _ProjectService.ensureDefaultProjectForFile (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:186469:17) at IpcIOSession.getFileAndProjectWorker (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:191719:77) at IpcIOSession.getFileAndProject (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:191705:17) at IpcIOSession.organizeImports (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:192284:36) at organizeImports (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:190451:43) at /Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:192651:15 at IpcIOSession.executeWithRequestId (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:192640:14) at IpcIOSession.executeCommand (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:192649:29) at IpcIOSession.onMessage (/Users/user_name/Documents/project_name/node_modules/typescript/lib/typescript.js:192697:68) at process.<anonymous> (/Users/user_name/Documents/project_name/node_modules/typescript/lib/tsserver.js:525:14) at process.emit (node:events:513:28) at emit (node:internal/child_process:937:14) at process.processTicksAndRejections (node:internal/process/task_queues:83:21)
问题原因与修复方法
你的配置核心错误:${command:typescript.organizeImports}是VS Code的内部编辑器命令,不能放在type: "shell"类型任务的command字段里——shell任务要求的是终端可执行的命令,而内部命令需要编辑器提供文件上下文才能正常运行,shell环境下没有传递这些信息,才导致TS Server抛出上下文缺失的错误。
给你两种可行的修复方案:
方案一:直接调用VS Code内部命令(推荐)
把任务类型改成command,直接调用编辑器内置的整理导入命令,还能指定作用于当前打开的文件:
{ "version": "2.0.0", "tasks": [ { "label": "整理当前文件导入", "type": "command", "command": "typescript.organizeImports", "args": ["${file}"], "problemMatcher": [] } ] }
${file}变量会自动替换成当前活动的文件路径,确保命令作用在你正在编辑的文件上problemMatcher: []避免VS Code寻找不存在的编译问题匹配规则
方案二:用shell命令调用tsc(TypeScript 4.5+支持)
如果想用终端命令执行,可以用TypeScript自带的--organizeImports参数,调用项目本地的tsc:
{ "version": "2.0.0", "tasks": [ { "label": "整理当前文件导入(Shell)", "type": "shell", "command": "npx tsc --organizeImports ${file}", "problemMatcher": [] } ] }
npx tsc会优先使用项目node_modules里的TypeScript版本,避免全局版本不一致的问题- 如果要批量整理所有文件,把
${file}改成./src/**/*.ts这类通配符即可
内容的提问来源于stack exchange,提问作者Alexander Bokov
相关产品推荐
相关产品推荐

