ng-bootstrap:ReferenceError:未定义文档

时间:2018-05-24 19:50:53

标签: angular webpack ng-bootstrap angular-universal

我有一个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,

1 个答案:

答案 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')()