Менее строгий режим для неинициализированных переменных при компиляции машинописи - PullRequest
0 голосов
/ 04 апреля 2019

Я использовал форк angular-cli, который компилирует несколько модулей https://www.npmjs.com/package/hydra-ngtools-webpack В aot все работает как положено, но когда я компилирую в JIT, я получаю ошибку ..

Невозможно прочитать толчок неопределенного

Я проследил ошибку до этой строки в angular_compiler_plugin.js в папке @ ngtools / webpack. Как видите, lazyRoutes не было присвоено начальное значение.

_listLazyRoutesFromProgram() {
    let lazyRoutes;
    if (this._JitMode) {
        if (!this.entryModule) {
            return {};
        }
        const ngProgram = compiler_cli_1.createProgram({
            rootNames: this._rootNames,
            options: Object.assign({}, this._compilerOptions, { genDir: '', collectAllErrors: true }),
            host: this._compilerHost,
        });
        this.entryModule.forEach((entryModule) => {
            ngProgram.listLazyRoutes(entryModule.path + '#' + entryModule.className).forEach((lazyRoute) => {
                lazyRoutes.push(lazyRoute);
            });
        });
    }

Если я инициализирую это так

let lazyRoutes=[];

Сборка компилируется без ошибок. Я связался с автором для этого пакета для источника этого репо, чтобы я мог сделать запрос на извлечение и все еще жду ответа от него. Есть ли способ, которым я могу сказать компилятору не жаловаться на эту неинициализированную переменную и быть прощающим. В противном случае мне придется редактировать эту строку при каждой установке npm, что не идеально.

1 Ответ

0 голосов
/ 04 апреля 2019

вы можете добавить оператор отключения для TS Lintt следующим образом:

_listLazyRoutesFromProgram() {
    // tslint:disable-next-line:RULENAME
    let lazyRoutes;
    if (this._JitMode)
    ...

вам все равно нужно добавить его в код, так что на самом деле вы не сильно сэкономите.

...