Windows系统下Raku调用同目录自定义模块报错问题咨询
问题说明
该问题是Rakudo v2021.10版本在Windows平台的专属已知bug,你的代码逻辑完全正确,Linux环境下可正常运行也验证了这一点。
报错根因
报错返回的错误码123对应Windows系统标准错误码ERROR_INVALID_NAME(无效文件名),触发原因是该版本Rakudo的Windows编译版存在路径处理缺陷:$*PROGRAM.dirname返回的带盘符路径传入use lib时,底层目录读取逻辑未适配Windows路径规则,导致目录句柄读取失败。
修复方案
可任选以下一种方案解决:
- 升级Rakudo到v2022.02及以上版本,该路径适配bug已在后续版本修复,升级后原代码可直接正常运行
- 若暂时无法升级,将
main.raku中的use lib $*PROGRAM.dirname;替换为use lib '.';,只要运行脚本时的工作目录为脚本存放的C:\Users\suman目录,即可正常加载模块 - 也可手动对路径做兼容处理,将对应代码修改为
use lib $*PROGRAM.dirname.IO.absolute;,旧版本Rakudo可正常识别该路径格式
内容的提问来源于stack exchange,提问作者Suman。
相关产品推荐
相关产品推荐

