Open
Description
预先准备
- 删除
~/.config/wechat-devtools
目录,重新打开项目(若发布issue
即默认阁下执行了此操作且问题没有解决); - HelloWorld是否正常(登录状态新建默认项目,执行复现步骤):不太正常
- 注意:如果你的问题是编译器错误,那么请提供可复现的demo,否则会被直接关闭。
问题描述
编译成功、真机预览成功,左侧运行前可显示欢迎界面,运行后只能看到小程序的标题栏,小程序页面空白,右侧调试工具显示空白,控制台报错
[8484:8484:1017/180102.329379:ERROR:CONSOLE(2)] "Uncaught SyntaxError: Unexpected token o in json at position 1", source: devtools://devtools/bundled/third_party_sentry.js (2)
问题复现
- 下载并安装了特定版本的node:
node-v16.4.2-linux-arm64
- 在
https://github.com/LeonardLaszlo/nw.js-armv7-binaries/releases
找到下载nw55-arm64_2021-12-05.tar.gz
,解压出来后,再解压usr/docker/dist/nwjs-chrome-ffmpeg-branding/nwjs-v0.55.0-linux-arm64.tar.gz
,并替换掉原有的nwjs
文件夹 - 在新的
nwjs
文件夹中重新建立以下软链接:此时cd ./nwjs ln -s node16.4.2的安装路径/node node ln -s node node.exe ln -s ../package.nw/ package.nw
nwjs
文件夹中的文件file *
结果如下:crashpad_handler: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[xxHash]=9d60b7729c144dfb, with debug_info, not stripped credits.html: HTML document text HTML document, ASCII text icudtl.dat: data lib: directory locales: directory node: symbolic link to /usr/local/node16/bin/node node.exe: symbolic link to node nw: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[xxHash]=a47a13033e58fafa, stripped nw_100_percent.pak: data nw_200_percent.pak: data package.nw: symbolic link to ../package.nw/ resources.pak: data swiftshader: directory v8_context_snapshot.bin: data
- 运行
./bin/wechat-devtools
- 提示“无法加载以下来源的扩展程序: .清单文件缺失或不可读取”,点击“确认”忽略,程序继续往后执行
- 登录窗口成功弹出,然后扫码并成功登录了微信号
- 创建一个简单helloworld模板项目,打开编译运行项目
- 主程序窗口成功显示,左侧显示欢迎界面,右侧文件列表、编辑器、调试器均空白,此时弹出是否信任项目,点击信任
- 左侧显示灰色文字的编译过程,编译结束后,顶部显示模拟的状态栏、小程序标题栏、胶囊按钮,底部显示模拟手机的底部条。右侧视图无变化,文件列表、编辑器、调试器均空白
- 点击“预览”按钮生成了二维码,并用真机扫码运行预览
期望的效果
打开项目正常看到小程序编译运行的结果,正常使用调试器
截屏
版本信息 (这是必要的):
- 使用版本包: WeChat_Dev_Tools_v1.06.2407120-1_x86_64_linux.tar.gz
- 硬件与系统的简单介绍:
- 小米平板6pro|骁龙8+gen1|8+128g|MIUI14.0.9.0|Android13|已解锁BL|Magisk修补ROOT权限
- 使用LinuxDeploy的rootfs.tar方法安装debian12-bookworm|Xfce桌面环境|tigerVNC图形子系统
- Debian版本:12.5-bookworm-aarch64
- 内核版本:5.10.136-android12-9-00021-g821df8f5bd36-ab9585204
- nw版本:v0.55.0, Chromium 92.0.4515.107
- node版本:v16.4.2
代码片段
额外的信息
2024-10-17:目前已经可以编译然后真机预览和上传,可以在一些应急场景下使用。本来不抱任何希望的,现在有种快成功的感觉了,在此记录一番
由于报错unexpected token o
,因此鄙人推断:代码的某处运行了JSON.parse
的解析方法时,入参的字符串出现了"[object Object]"
。在普通x86PC运行时正常,此处应该是正常传入了某个对象的JSON字符串。经鄙人简单分析,后续可尝试的步骤包括但不限于:
- 尝试打开nw的调试器查看更多更详细的报错输出
- 尝试更换不同版本的nw和node二进制。鄙人在x86ubuntu上测试过,软件包内的
nwjc
,payload
,nacl_*
,chromedriver
这四个x64二进制的存在与否对当前的现状似乎无影响,因此问题的重心暂时还是在node
和nw
当中。 - 尝试更换交叉编译器或者更改某些编译参数,重新编译arm64版本的nw
- 尝试碰运气,使用网络抓包分析
"[object Object]"
的字符串是否由网络接口获得,进而排除调用接口时因为环境参数不同,传参后导致网络接口返回错误的结果的可能性。 - 尝试解包并解读package.nw当中的源码,结合报错信息进行debug
- 尝试更换赛道,使用
box64
运行本软件包
控制台输出(节选)
Error: unrecognized flag --harmony-weak-refs
Try --help for options
[8276:8276:1017/175929.114708:ERROR:sandbox_linux.cc(376)] InitializeSandbox() called with multiple threads in process gpu-process.
[8277:8284:1017/175933.467925:ERROR:cert_verify_proc_builtin.cc(601)] No net_fetcher for performing AIA chasing.
...重复5次
[8484:8484:1017/180101.851874:ERROR:CONSOLE(2)] "console.assert", source: devtools://devtools/bundled/third_party/sentry.js (2)
...重复6次
[8484:8484:1017/180101.893582:ERROR:CONSOLE(2)] "Uncaught SyntaxError: Unexpected token o in JSON at position 1", source: devtools://devtools/bundled/third_party/sentry.js (2)
...重复26次
ls: 无法访问 '/dev/disk/by-id/': 没有那个文件或目录
Metadata
Metadata
Assignees
Labels
No labels