在我的.netcore应用程序中,我把我的打字本版本从2.4.1升级到了3.2.4,现在我在编译时收到了错误Cannot find name 'setImmediate'。下面的实现基本上是直接从微软指南的预渲染.
export default createServerRenderer(params => {
const providers = [
{ provide: INITIAL_CONFIG, useValue: { document: '<app></app>', url: params.url } },
{ provide: APP_BASE_HREF, useValue: params.baseUrl },
{ provide: 'BASE_URL', useValue: params.origin + params.baseUrl },
];
return platformDynamicServer(providers).bootstrapModule(AppModule).then(moduleRef => {
const appRef: ApplicationRef = moduleRef.injector.get(ApplicationRef);
const state = moduleRef.injector.get(PlatformState);
const zone = moduleRef.injector.get(NgZone);
return new Promise<RenderResult>((resolve, reject) => {
zone.onError.subscribe((errorInfo: any) => reject(errorInfo));
appRef.isStable.pipe(first(isStable => isStable)).subscribe(() => {
setImmediate(() => { // <!-- error here
resolve({
html: state.renderToString(),
globals: {
}
});
moduleRef.destroy();
});
});
});
});
});我看到了是因为这件事而引起的,但是它被标记为已解析和合并。我还试着安装setImmediate包并导入它,但是这也不起作用。有人知道怎么解决这个问题吗?
发布于 2019-02-22 11:27:44
非webpack:
安装npm install --save-dev @types/node,然后在文件开始时导入import '@types/node';,解决了这个问题。
Webpack:
如果你在使用webpack,那么这是行不通的。取而代之的是npm install --save-dev @types/node node,那么您必须:
进入您的.tsconfig并添加'node'
{
"compilerOptions": {
"types": [..., "node" ],
...
}
}不要import '@types/node'; --这是因为这里声明的理由
@types包存储在@types目录中,但绝不能手动导入。相反,您需要从安装该依赖项的位置导入它们对应的依赖项。@types包为依赖项提供类型声明,而这些依赖项不提供依赖项。
发布于 2020-03-21 08:26:10
我刚刚用webpack尝试了这个解决方案,我注意到不需要npm安装节点,只需安装@type/节点(当然,按照其余的说明),它将完美地工作:)
https://stackoverflow.com/questions/54805607
复制相似问题