我有一个Angular 6 SSR应用程序,我已经添加了ng-bootstrap,但是在SSR构建和运行时,我得到错误:
ReferenceError: Document is not defined
at NgbFocusTrapFactory.ctorParameters (J:\Java\workstation\front\.server\server.js:2221:48333)
at ReflectionCapabilities._ownParameters (J:\Java\workstation\front\.server\server.js:76:1668)
at ReflectionCapabilities.parameters (J:\Java\workstation\front\.server\server.js:76:2482)
at JitReflector.parameters (J:\Java\workstation\front\.server\server.js:3226:919)
at CompileMetadataResolver._getDependenciesMetadata (J:\Java\workstation\front\.server\server.js:2665:25829)
at CompileMetadataResolver._getTypeMetadata (J:\Java\workstation\front\.server\server.js:2665:23935)
at CompileMetadataResolver._getInjectableTypeMetadata (J:\Java\workstation\front\.server\server.js:2665:31300)
at CompileMetadataResolver.getProviderMetadata (J:\Java\workstation\front\.server\server.js:2665:31593)
at J:\Java\workstation\front\.server\server.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,
答案 0 :(得分:1)
我用jsdom-global 解决了这个问题。
jsdom-global会将文档,窗口和其他DOM API注入您的 Node.js环境。用于在Node.js中运行的测试 为浏览器制作。
1)运行:npm install --save-dev --save-exact jsdom jsdom-global
2)在vendor.ts
中添加:require('jsdom-global')()