Проблема с импортом JS Класс в nodejs - PullRequest
0 голосов
/ 27 марта 2020
class driverClass {
    static #MAX_INSTANCES = 2;
    static #instances = 0;

    #_id = 0;

    static existsID (id) {
        return driverClass.#_takenIDs.includes(id);
    }

    constructor (id) {
        driverClass.#instances++;

        this.#_id = id;

        driverClass.#_takenIDs.push(id);
    }
}
module.exports = driverClass;

in nodejs

let driverClass = require ('./ driverClass');

после запуска я получаю эту ошибку:

driverClass. js: 2 состояния c #MAX_INSTANCES = 2;

               ^

1 Ответ

0 голосов
/ 27 марта 2020

Возможно, вам потребуется обновить узел. Частные поля c * поддерживаются по состоянию на 12.0.0

Если мы сначала изменим код для определения #_takenIDs ...

$ cat driverClass.js
class driverClass {
    static #MAX_INSTANCES = 2;
    static #instances = 0;

    #_id = 0;
    #_takenIDs = [];

    static existsID (id) {
        return driverClass.#_takenIDs.includes(id);
    }

    constructor (id) {
        driverClass.#instances++;

        this.#_id = id;

        driverClass.#_takenIDs.push(id);
    }
}
module.exports = driverClass;

.. и запустив его, используя узел v13.12.0, мы увидим правильное поведение:

$ node --version
v13.12.0
$ node
Welcome to Node.js v13.12.0.
Type ".help" for more information.
> let driverClass = require('./driverClass');
undefined

Однако, если мы загрузим более старую версию узла, то это не получится:

$ nvm use 10.14.1
Now using node v10.14.1 (npm v6.4.1)
$ node
> let driverClass = require('./driverClass');
./driverClass.js:2
    static #MAX_INSTANCES = 2;
           ^

SyntaxError: Invalid or unexpected token
...