Как заставить желудь js правильно стилизовать проверку полей и методов частного класса? - PullRequest
1 голос
/ 10 апреля 2020

Я работаю над проектом, где мне нужно использовать проверку стиля для моего кода. Я хочу использовать желудь js, однако она не работает при попытке анализа полей частного класса и методов класса.

Я пробовал:

const { Parser } = require('acorn');
const privateMethods = require('acorn-private-methods');
const MyParser = Parser.extend(
  require("acorn-private-methods")
)
MyParser.parse('class X {#a =2; #b() {} }');

Однако это не работает при запуске. Это сообщение об ошибке:

******** Severe error(s) on main thread (0) ********
SyntaxError: Unexpected token (1:12)
   pos: 12
   loc: {[Position] line: 1, column: 12 }
   raisedAt: 13
  var err = new SyntaxError(message);
            ^
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:2844:13
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:690:8
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:684:26
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:2623:8
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:1389:23
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:1378:8
    at parseClassElement (c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn-private-methods/index.js:13:46)
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:1317:26
    at parseClass (c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn-private-methods/node_modules/acorn-private-class-elements/index.js:78:29)
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:839:17
    at c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:749:23
    at parse (c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:552:15)
    at parse (c:/Users/awheeler/Desktop/Imagine/imagine/node_modules/acorn/dist/acorn.js:575:35)
    at c:/Users/awheeler/Desktop/Imagine/imagine/util/acornStyle.js:61:10
    at c:/Users/awheeler/Desktop/Imagine/imagine/util/style.js:28:20

Мне нужно иметь возможность использовать поля и методы частного класса, но я не знаю, как получить желудь, чтобы правильно его проанализировать.

1 Ответ

1 голос
/ 10 апреля 2020

Проблема с #a = 2, а не с #b() {}. Это связано с тем, что есть два отдельных модуля для:

Итак, добавьте acton-class-fields:

const { Parser } = require('acorn');
const privateMethods = require('acorn-private-methods');
const classFields = require('acorn-class-fields');
const MyParser = Parser
  .extend(privateMethods)
  .extend(classFields);
MyParser.parse('class X {#a =2; #b() {} }');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...