问题:
Reason:WINDOW_EXCEPTION_DETECTION
syswarning: WINDOW_EXCEPTION_DETECTION WINDOW_EXCEPTION_DETECTION at 20241223154611
DisplayPowerInfo:powerState:UNKNOWN
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DOMAIN:WINDOWMANAGER
STRINGID:WINDOW_EXCEPTION_DETECTION
TIMESTAMP:2024/12/23-15:46:11:144
PID:3661
UID:20020051
PACKAGE_NAME:
PROCESS_NAME:
办法:
CrashLog中报错syswarning,检查发现,是
onWindowStageCreate(windowStage: window.WindowStage): void
以下设置的Page被删除了导致的,换成正确的page即可解决;
windowStage.loadContent('pages/Index', (err) => {
....
});
问题: “NODE HOME is set to an invalid directory, check /usr/local/bin“
办法:
检查Node.js安装路径
which node
设置NODE_HOME环境变量
echo 'export NODE_HOME=/usr/local/bin/node' >> ~/.bashrc or ~/.zshrc echo 'export PATH=$NODE_HOME/bin:$PATH' >> ~/.bashrc or ~/.zshrc
刷新配置
source ~/.bashrc
or ~/.zshrc
验证配置
echo $NODE_HOME
问题:Error: The hvigor depends on the npmrc file. Configure the npmrc file first.
办法:
是没有npmrc文件,是隐藏文件,检查有没有,如果没有在电脑的根目录/Users/**/下输入终端命令
touch ~/.npmrc
vim ~/.npmrc
写入如下内容
registry=https://repo.huaweicloud.com/repository/npm/ @ohos:registry=https://repo.harmonyos.com/npm/
作者:罐罐金 链接:www.jianshu.com/p/7283650dc…
问题:"globalThis" is not supported (arkts-no-globalthis)
办法:
由于无法为globalThis添加静态类型,只能通过查找的方式访问globalThis的属性,造成额外的性能开销。另外,无法为globalThis的属性标记类型,无法保证对这些属性操作的安全和高性能。因此ArkTS不支持globalThis。
- 建议按照业务逻辑根据import/export语法实现数据在不同模块的传递。
- 必要情况下,可以通过构造的单例对象来实现全局对象的功能。(说明: 不能在har中定义单例对象,har在打包时会在不同的hap中打包两份,无法实现单例。)
构造单例对象
// 构造单例对象
export class GlobalContext {
private constructor() {}
private static instance: GlobalContext;
private _objects = new Map<string, Object>();
public static getContext(): GlobalContext {
if (!GlobalContext.instance) {
GlobalContext.instance = new GlobalContext();
}
return GlobalContext.instance;
}
getObject(value: string): Object | undefined {
return this._objects.get(value);
}
setObject(key: string, objectClass: Object): void {
this._objects.set(key, objectClass);
}
}
应用代码
// file1.ts
export class Test {
value: string = '';
foo(): void {
globalThis.value = this.value;
}
}
// file2.ts
globalThis.value;
建议改法
// file1.ts
import { GlobalContext } from '../GlobalContext'
export class Test {
value: string = '';
foo(): void {
GlobalContext.getContext().setObject('value', this.value);
}
}
// file2.ts
import { GlobalContext } from '../GlobalContext'
GlobalContext.getContext().getObject('value');
问题:error:上传文件"responseCode":17,"message":"Http protocol error"
办法:
Header头设置方式为 header: {'Content-Type': ''}
,用于覆盖 harmonyOS 默认的Header参数'Content-Type':'application/json'
;
问题:windowClass.setWindowPrivacyMode(isPrivacyMode, (err:BusinessError) => {}
设置防截屏,报错:{"code":201}
办法:
查文档是没有设置权限:Permission verification failed. The application does not have the permission required to call the API.
在module.json5
中添加即可。
"module": {
"requestPermissions":
[
{
"name": "ohos.permission.PRIVACY_WINDOW",
}
]
}
问题:Navigation自定义路由表跳转到某个Page,为空页面
办法:
未设置路由表,须module.json5
里加上下面的声明;
"routerMap": "$profile:router_map",
一般Navigation问题,易错处:
- 跳转的Page内容未有
NavDestination()
包含,导致无法正常跳转; PageMaps
或路由表router_map.json5
,都没有声明该Page;- Page名字写错;
- 主页面用
Navigation(this.pageInfos)
,子页面用NavDestination()
搞错; - 声明了路由表
router_map.json5
,没有在module.json5
声明使用;