ipc 2.19.6升级记录:
1.1.1. 升级依赖包
将 package.json 中 @bentley相关依赖包版本改成 2.19.6
执行脚本:install.bat -> patch.bat -> dev.bat
有的窗口会报如下图所示的错误
原因是 @bentley/backend-itwin-client 和 open-client 这两个依赖包依赖了不同版本的 got,分别为11.8.2 和 9.6.0, 根据npm管理,最外层的node_modules 中默认安装的是11.8.2,open-clinet下会单独安装自身依赖的9.6.0版本。
原理如图:
报错的地方index.d.ts ,由于没找到当前node_modules下got类型声明文件,而引用了外层 got 。
解决方法: (1)除backend以外的报错窗口安装低版本的got:npm install got@^9.6.0 (2)backend 终端执行: cd node_modules\openid-client npm install --save @types/got
- frontend 升级 sass-loader: npm install sass-loader@^10.1.0
1.1.2. 代码更新
backend
RpcBriefcaseUtility.ts: 更新了BriefcaseManager.processChangeSets接口
if (db.changeSetId !== tokenProps.changeSetId) await BriefcaseManager.processChangeSets( requestContext, db, tokenProps.changeSetId!, );
改成
if (db.changeset.id !== tokenProps.changeSetId) await BriefcaseManager.processChangesets(requestContext, db, { id: tokenProps.changeSetId!, });
frontend
(1)/frontend/src/viewer/AcdpViewport.tsx
Viewport.attachRealityMode 方法已丢弃,使用DisplayStyleState.attachRealityModel 方法添加实景。
vp.attachRealityModel(m.realityModelProps)
更改成:
view.getDisplayStyle3d().attachRealityModel(m.realityModelProps)
(2)/frontend/src/api/rpc.ts
StandaloneIModelRpcInterface 接口已丢弃,将
StandaloneIModelRpcInterface 改成 SnapshotIModelRpcInterface
(3)/frontend/src/api/SavedViewUtil.ts
Vewport.perModelCategoryVisibility.forEachOverride方法已丢弃,用for...of 来做遍历
vp.perModelCategoryVisibility.forEachOverride(
(modelId: string, categoryId: string, visible: boolean) => {
perModelCategoryVisibility.push({ modelId, categoryId, visible });
return true;
}
);
改成
for (const ovr of vp.perModelCategoryVisibility) {
// istanbul ignore else
perModelCategoryVisibility.push({ modelId: ovr.modelId, categoryId: ovr.categoryId, visible: ovr.visible });
}
(4)/frontend/src/viewer/viewlist/ViewListWidget.tsx
(viewState as ViewState3d).getDisplayStyle3d().changeBackgroundMapProps({
...viewState.getDisplayStyle3d().settings.backgroundMap,
groundBias: (vp.view as SpatialViewState).getDisplayStyle3d().settings
.backgroundMap.groundBias,
});
改成
const settings = (vp.view as SpatialViewState).getDisplayStyle3d().settings.backgroundMap.clone();
(viewState as ViewState3d).getDisplayStyle3d().changeBackgroundMapProps({
...settings.toJSON(),
groundBias: settings.groundBias,
});
(5)/frontend/src/viewer/widgets/RealityModelWidget.tsx
ScreenViewport.setOSMBuildingDisplay 方法已丢弃
DisplayStyleState.getOSMBuildingDisplayIndex 方法已丢弃
注释
// vp.setOSMBuildingDisplay({ onOff: enabled });
// setOsmOn(vp.displayStyle.getOSMBuildingDisplayIndex() >= 0);
(6) /frontend/src/api/ViewCreator.ts
MapLayerSource.subLayers 属性已丢弃
注释
// source.subLayers = validation.subLayers;
(7)/frontend/src/api/AcdpApp.ts
TileAdmin.Props 配置已更新
private static tileAdminProps: TileAdmin.Props = {
alwaysRequestEdges: false,
alwaysSubdivideIncompleteTiles: false,
cancelBackendTileRequests: true,
enableExternalTextures: true,
enableInstancing: true,
// maximumLevelsToSkip: undefined,
// minimumSpatialTolerance: undefined,
retryInterval: 1000,
// tileExpirationTime: undefined,
// tileTreeExpirationTime: undefined,
};
改成
private static tileAdminProps: TileAdmin.Props = {
alwaysRequestEdges: false,
alwaysSubdivideIncompleteTiles: false,
optimizeBRepProcessing: true,
// cancelBackendTileRequests: true,
enableExternalTextures: true,
enableInstancing: true,
// maximumLevelsToSkip: undefined,
// minimumSpatialTolerance: undefined,
retryInterval: 1000,
// tileExpirationTime: undefined,
// tileTreeExpirationTime: undefined,
};