После обновления webpack и Angular получает ошибку. Не удается найти имя 'setImmediate' - PullRequest
0 голосов
/ 05 декабря 2018

Я создал проект, используя Visual Studio Angular Template.Я недавно обновил свой Angular с 6 до 7 и Typescript до 3.1.6 .Также обновлено Webpack с 3.8.1 до 3.12.0 .

Теперь, когда я пытаюсь скомпилировать с помощью команды webpack, я получаю следующую ошибку

ERROR in [at-loader] ./ClientApp/boot.server.ts:30:17
        TS2304: Cannot find name 'setImmediate'.

Thisошибка выдается из кода boot.server.ts

return platformDynamicServer(providers).bootstrapModule(AppModule).then(moduleRef => {
        const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);
        const state = moduleRef.injector.get(PlatformState);
        const zone: NgZone = moduleRef.injector.get(NgZone);

        return new Promise<RenderResult>((resolve, reject) => {
            zone.onError.subscribe((errorInfo: any) => reject(errorInfo));
            appRef.isStable.pipe(first(isStable => isStable)).subscribe(() => {
                // Because 'onStable' fires before 'onError', we have to delay slightly before
                // completing the request in case there's an error to report
                setImmediate(() => {
                    resolve({
                        html: state.renderToString()
                    });
                    moduleRef.destroy();
                });
            });
        });
    });

Я пытаюсь исправить это в течение некоторого времени, но безуспешно.Любая идея>

Ответы [ 3 ]

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

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

В package.json добавить

"@types/node": "10.12.18",

Также убедитесь, что ваш tsconfig.json правильно включает файлы типов.Либо добавьте 'node' в ваш массив "types", если вы явно включаете файлы типов вручную:

"types": ["node"]

, либо используйте свойство "typeRoots":

"typeRoots": [ "node_modules/@types" ]

Я предпочитаювторой вариант, так как тогда все устанавливаемые вами пакеты @type будут автоматически распознаваться вашей IDE.


Этот вопрос относится к аналогичной проблеме, ответ там более подробно, чем я: машинописная ошибка получения TS2304: не удается найти имя 'require'

0 голосов
/ 14 августа 2019

Вы можете использовать (окно) перед setImmediate

return new Promise<RenderResult>((resolve, reject) => {
        zone.onError.subscribe((errorInfo: any) => reject(errorInfo));
        appRef.isStable.first(isStable => isStable).subscribe(() => {
            // Because 'onStable' fires before 'onError', we have to delay slightly before
            // completing the request in case there's an error to report
            (<any>window).setImmediate(() => {
                resolve({
                    html: state.renderToString()
                });
                moduleRef.destroy();
            });
        });
    });
0 голосов
/ 05 декабря 2018

извини, мой плохой.выполните команду "npm install" из cmd или powershell.это должно решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...