Angular服务器端呈现:当“isBrowser = false”时如何消除导入

时间:2017-04-13 11:03:19

标签: angular angular-cli serverside-rendering

其中一个组件有此导入:

import * as  mapBoxGlClient from 'mapbox-gl/dist/mapbox-gl.js';

所有构建都有效。 但是当我运行节点时:

node main.server.bundle.js

我收到了这个错误:

Cannot read property 'hardwareConcurrency' of undefined

经过调查,我意识到mapbox需要window.navigator,浏览等所有不能在服务器上使用的东西

所以我的问题是有任何方法可以跳过导入,或任何其他想法将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

问题不在于导入(在运行代码之前解析和解析导入),而是使用其中的东西的代码。据我所知,没有办法有条件地导入东西,但无论你是否在浏览器环境中,你都可以有条件地执行代码。