开发者社区 > 云效DevOps > 正文

Taro在开发环境的WSL Arch中打包成功,但是CI中不行

前提

  • 可以确定config/index.ts存在 (ls 验证过)
  • 可以确定本地打包成功没有编译错误

猜测

  1. Taro的框架有问题
  2. CI的Linux环境缺少必要的编译工具链 (但不明确使用的是什么发行版的容器,是否可以再编译前额外安装工具包)

日志

[14:38:00] > taro build --type weapp
[14:38:00] 
[14:38:00] 👽 Taro v3.6.22
[14:38:00] 
[14:38:00] Error: /root/workspace/xxxx/node_modules/.pnpm/@tarojs+binding-linux-x64-gnu@3.6.22/node_modules/@tarojs/binding-linux-x64-gnu/taro.linux-x64-gnu.node: undefined symbol: __libc_single_threaded
[14:38:00]     at Object.Module._extensions..node (node:internal/modules/cjs/loader:1243:18)
[14:38:00]     at Module.load (node:internal/modules/cjs/loader:1037:32)
[14:38:00]     at Function.Module._load (node:internal/modules/cjs/loader:878:12)
[14:38:00]     at Module.require (node:internal/modules/cjs/loader:1061:19)
[14:38:00]     at require (node:internal/modules/cjs/helpers:103:18)
[14:38:00]     at Object.<anonymous> (/root/workspace/xxxxx/node_modules/.pnpm/@tarojs+binding@3.6.22/node_modules/@tarojs/binding/binding.js:188:31)
[14:38:00]     at Module._compile (node:internal/modules/cjs/loader:1159:14)
[14:38:00]     at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
[14:38:00]     at Object.newLoader [as .js] (/root/workspace/xxxxxxx/node_modules/.pnpm/pirates@4.0.6/node_modules/pirates/lib/index.js:121:7)
[14:38:00]     at Module.load (node:internal/modules/cjs/loader:1037:32) {
[14:38:00]   code: 'ERR_DLOPEN_FAILED'
[14:38:00] }
[14:38:00] 找不到项目配置文件config/index,请确定当前目录是 Taro 项目根目录!
[14:38:00]  ELIFECYCLE  Command failed with exit code 1.

展开
收起
不爱吃韭菜盒子 2024-01-12 14:48:57 159 0
2 条回答
写回答
取消 提交回答
  • 从给出的日志中,我们可以看到两个主要问题:

    1. undefined symbol: __libc_single_threaded

    这是一个常见的链接错误,通常表示你的程序试图使用某个库中的符号(在这里是__libc_single_threaded),但这个符号在链接时并未找到。这可能是由于以下几种原因:

    * 不同的系统/环境使用了不同版本的libc库。
    * Taro的预编译二进制文件可能是在与CI环境中的Linux发行版不兼容的系统上编译的。
    * CI环境中的某些库或工具链可能已损坏或缺失。为了解决这个问题,你可以尝试以下方法:
    
    
    * 确保Taro的版本与CI环境中的Node.js版本兼容。
    * 如果可能的话,尝试在CI环境中使用与你的开发环境相同的Linux发行版或版本。
    * 尝试在CI环境中重新安装或更新必要的库和工具链。
    
    1. 找不到项目配置文件config/index

    尽管你确认config/index.ts文件存在,但Taro在CI环境中仍然无法找到它。这可能是由于文件路径或权限问题。你可以尝试以下方法:

    * 确保`config/index.ts`文件的路径正确,并且与你在Taro项目中的其他文件/目录的路径一致。
    * 检查`config/index.ts`文件的权限,确保它在CI环境中可读。
    * 尝试在CI环境中运行`ls config/`命令,看看是否能正确列出`index.ts`文件。
    
    2024-01-22 10:13:35
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    根据日志,问题可能是由于CI环境中缺少必要的编译工具链导致的。可以尝试在CI环境中安装相应的编译工具链,例如在Ubuntu系统中,可以使用以下命令安装:

    sudo apt-get update
    sudo apt-get install build-essential
    

    如果问题仍然存在,可以尝试在项目根目录下创建一个名为.ci的文件夹,并在其中创建一个名为install_compiler.sh的脚本文件,内容如下:

    #!/bin/bash
    sudo apt-get update
    sudo apt-get install build-essential
    

    然后给该脚本文件添加可执行权限:

    chmod +x .ci/install_compiler.sh
    

    最后,在CI构建过程中运行该脚本以安装编译工具链。

    2024-01-12 21:40:31
    赞同 展开评论 打赏

云效,企业级一站式研发协同平台,数十万企业都在用。支持公共云、专有云和混合云多种部署形态,通过云原生新技术和研发新模式,助力创新创业和数字化转型企业快速实现研发敏捷和组织敏捷,打造“双敏”组织,实现多倍效能提升。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载