微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VSC Apex-prettier-plugin-apex 未格式化 - 引发错误

如何解决VSC Apex-prettier-plugin-apex 未格式化 - 引发错误

我使用 Visual Studio Code 并根据 https://developer.salesforce.com/tools/vscode/en/user-guide/prettier 安装了 Prettier 插件和 Prettier-plugin-apex (也https://www.sfdcnotes.com/2019/12/16/vs-code-extension-prettier-code-formatter/)。

它曾经格式化我的类,但最近一直失败,但我只看到右下角的这个,没有解释保存类文件时出了什么问题(它在保存时格式化/在保存时部署)。

enter image description here

当我尝试使用 npx prettier --write 手动格式化时,出现此错误

PS C:\Users\xx\Documents\VSC\SynDev> npx prettier --write force- 
app/main/default/classes/emailReportController_Test.cls     
force-app\main\default\classes\emailReportController_Test.cls
[error] force-app\main\default\classes\emailReportController_Test.cls: Error
[error]     at parseTextWithSpawn  (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier-plugin-apex\src\parser.js:36:11)
[error]     at Object.parse (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier-plugin-apex\src\parser.js:489:21)
[error]     at Object.parse$a [as parse] (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\index.js:14892:19)
[error]     at coreFormat (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\index.js:16425:16)
[error]     at formatWithCursor$1 (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\index.js:16665:14)
[error]     at Object.formatWithCursor (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\index.js:60922:12)
[error]     at format$1 (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\bin-prettier.js:16107:14)
[error]     at Object.formatFiles$1 [as formatFiles] (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\bin-prettier.js:16218:16)
[error]     at main (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\bin-prettier.js:17989:10)
[error]     at Object.run (C:\Users\xx\Documents\VSC\SynDev\node_modules\prettier\bin-prettier.js:17932:5)

我该如何解决这个问题 - 出了什么问题(我不是 VSC 或 npm 方面的专家)?

这是我的 package.json 文件

{
  "name": "salesforce-app","private": true,"version": "1.0.0","description": "Salesforce App","scripts": {
    "lint": "npm run lint:lwc && npm run lint:aura","lint:aura": "eslint **/aura/**","lint:lwc": "eslint **/lwc/**","test": "npm run test:unit","test:unit": "sfdx-lwc-jest","test:unit:watch": "sfdx-lwc-jest --watch","test:unit:debug": "sfdx-lwc-jest --debug","test:unit:coverage": "sfdx-lwc-jest --coverage","prettier": "prettier --write \"**/*.{cls,cmp,component,css,html,js,json,md,page,trigger,xml,yaml,yml}\"","prettier:verify": "prettier --list-different \"**/*.{cls,yml}\""
  },"devDependencies": {
    "@prettier/plugin-xml": "^0.12.0","@salesforce/eslint-config-lwc": "^0.11.0","@salesforce/eslint-plugin-aura": "^2.0.0","@salesforce/sfdx-lwc-jest": "^0.10.4","eslint": "^7.24.0","eslint-config-prettier": "^6.11.0","husky": "^4.2.1","lint-staged": "^10.0.7","prettier": "2.3.0","prettier-plugin-apex": "1.9.1"
  },"husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },"lint-staged": {
    "**/*.{cls,yml}": [
      "prettier --write"
    ],"**/{aura|lwc}/**": [
      "eslint"
    ]
  },"main": "jest.config.js","author": "","license": "ISC"
}

还有.prettierrc

{
  "trailingComma": "none","overrides": [
    {
      "files": "**/lwc/**/*.html","options": { "parser": "lwc" }
    },{
      "files": "*.{cmp,component}","options": { "parser": "html" }
    }
  ]
}

解决方法

我遇到了同样的问题并找到了解决方法。

通过更改 prettier-plugin-apex 中的版本号安装以前版本的 package.json

"prettier-plugin-apex": "1.8.0"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。