You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Javy编译JS为Wasm时执行make download-wasi-sdk报错如何解决

问题背景

使用Javy将JavaScript编译为Wasm时,需要安装wasi-sdk构建依赖,执行make download-wasi-sdk命令下载组件时出现如下报错:

ajit0902@AJITPC:/mnt/c/Users/msi/javy$ make download-wasi-sdk
./install-wasi-sdk.sh
/usr/bin/env: ‘bash\r’: No such file or directory
make: *** [Makefile:5: download-wasi-sdk] Error 127
报错原因

报错核心是shell脚本使用了Windows系统的CRLF换行符(行尾携带\r回车符)。从执行路径/mnt/c/可判断当前运行环境为WSL,挂载的是Windows磁盘分区,Linux系统解析脚本首行的shebang声明时,会把行尾的\r识别为解释器名称的一部分,尝试查找名为bash\r的可执行文件,系统不存在该文件因此抛出127错误码。

触发该问题的常见场景:

  • 克隆仓库时Git开启了自动换行转换,将Linux下的LF换行自动替换为Windows的CRLF换行
  • 仓库内的shell脚本曾在Windows编辑器中被修改,保存时默认使用了CRLF换行格式
解决方法

可根据实际场景选择对应方案:

方案1:使用dos2unix批量转换换行符(推荐)

操作步骤:

  1. WSL环境下先安装dos2unix转换工具,Debian/Ubuntu系执行命令:sudo apt update && sudo apt install -y dos2unix
  2. 进入Javy仓库根目录,批量转换所有shell脚本的换行格式为Linux兼容的LF格式:find . -type f -name "*.sh" -exec dos2unix {} \;
  3. 重新执行make download-wasi-sdk命令即可正常运行。

方案2:调整Git配置后重新拉取代码

如果是Git自动转换换行导致的问题,可修改Git全局配置后重新拉取仓库:

  1. 执行命令关闭Git自动换行转换:git config --global core.autocrlf false
  2. 删除本地现有Javy仓库文件夹,重新克隆仓库代码
  3. 进入新拉取的仓库目录,重新执行make download-wasi-sdk。

方案3:临时指定解释器执行(应急场景使用)

如果不想批量修改文件,可绕开脚本的shebang解析,直接手动调用bash执行对应脚本:
直接执行bash ./install-wasi-sdk.sh完成wasi-sdk下载,后续执行其他make命令如果再出现同类换行报错,对应转换脚本格式即可。

注意:Javy的构建流程依赖POSIX兼容的shell环境,不要直接在Windows原生CMD、PowerShell中执行构建命令,必须在WSL、原生Linux或macOS环境下操作。

内容的提问来源于stack exchange,提问作者Ajit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 05:51:17