首页 > 解决方案 > 为什么在使用 babel-ts 解析器时运行 prettier check 会返回错误“Couldn't resolve parser "babel-ts"”?

问题描述

当我使用如下所示的更漂亮的配置调用命令 check: `prettier --check '**/*.ts' 时,我收到错误消息,指出 babel-ts 解析器未解析。我目前正在使用更漂亮的 2.3,它确实支持这个parser,所以我对我可能做错了什么感到有点困惑。

printWidth: 100
singleQuote: true
trailingComma: all
tabWidth: 2
useTabs: false
overrides:
  - files: "*.ts"
    options:
      parser: babel-ts

我尝试过使用各种配置格式(js、json 等)并在根目录上使用解析器配置,但似乎都不会影响奇怪的行为。

我的包配置:

{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "tsc -p ."
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/node": "^15.0.3"
  },
  "devDependencies": {
    "prettier": "^2.3.0",
    "typescript": "^4.2.4"
  }
}

测试文件index.ts

let a:number = 6

完全错误:

$ prettier --check '*.ts' 
Checking formatting...
index.ts[error] Error: Couldn't resolve parser "babel-ts"

注意:Prettier 只安装在本地而不是全局安装

标签: typescriptconfigprettier

解决方案


好吧,这令人沮丧。所以重申一下,安装是本地的而不是全局的,但是,当从项目目录运行时,它只会在使用 babel-ts 解析器时返回错误。如果我选择了另一个解析器,它工作正常。这可能是由于库中一些奇怪的路径逻辑造成的?没有把握。

但是,如果我运行以 yarn 为前缀的命令,即:

yarn prettier --check '*.ts'

有用。仍然觉得很奇怪,它只不适用于 babel-ts 解析器。

更新:即使它不存在于我的 npm/yarn 全局变量中,它仍然存在于我的 linux 系统中。我猜在某个时候我使用了一个尚未更新到更漂亮> 2.0 的 AUR 包。别忘了注意这些!


推荐阅读