ng-bootstrap : 引用错误: 未定义文档



我有一个 Angular 6 SSR 应用程序,并且我在其中添加了 ng-bootstrap,但在 SSR 构建和运行时,我收到以下错误:

ReferenceError: Document is not defined
at NgbFocusTrapFactory.ctorParameters (J:Javaworkstationfront.serverserver.js:2221:48333)
at ReflectionCapabilities._ownParameters (J:Javaworkstationfront.serverserver.js:76:1668)
at ReflectionCapabilities.parameters (J:Javaworkstationfront.serverserver.js:76:2482)
at JitReflector.parameters (J:Javaworkstationfront.serverserver.js:3226:919)
at CompileMetadataResolver._getDependenciesMetadata (J:Javaworkstationfront.serverserver.js:2665:25829)
at CompileMetadataResolver._getTypeMetadata (J:Javaworkstationfront.serverserver.js:2665:23935)
at CompileMetadataResolver._getInjectableTypeMetadata (J:Javaworkstationfront.serverserver.js:2665:31300)
at CompileMetadataResolver.getProviderMetadata (J:Javaworkstationfront.serverserver.js:2665:31593)
at J:Javaworkstationfront.serverserver.js:2665:29171
at Array.forEach (<anonymous>)

为什么我会Document is not defined? 我应该对Webpack或其他任何事情做点什么吗?

webpack : ^4.0.0
angular": 6.0.0-rc.6, 
ng-bootstrap: ^2.0.0,

我用jsdom-global解决了这个问题。

jsdom-global 会将文档、窗口和其他 DOM API 注入到您的 节点.js环境。对于在 Node.js 中运行以下测试很有用: 专为浏览器制作。

1(运行:npm install --save-dev --save-exact jsdom jsdom-global

2( 添加:require('jsdom-global')()供应商.ts

最新更新