as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
AWS
文档
Support
Contact Us
My Cases
新手入门
设计和开发
应用发布
参考
支持

解决Monorepo问题

解决Monorepo问题

本页介绍在Vega Studio中使用monorepo时的常见问题和解决方案。如果您在此处找不到特定问题的解决方案,请在开发者论坛中发布问题以获得更多支持。

不支持的程序包管理器

原因: 如果使用npm或yarn v2之外的包管理器,Vega Studio会显示错误或无法构建。Vega Studio仅支持npmyarn v2 CLI。其他包管理器无法与构建系统配合正常工作。

解决方案: 切换到支持的包管理器:

  • 使用npm进行标准包管理
  • 使用yarn v2+获取高级工作区功能

未检测到程序包管理器

原因: Vega Studio无法检测到您的monorepo中的程序包管理器,因为默认为npm,从而出现错误。对于空的或洁净的monorepos,检测可能具有挑战性。Vega Studio默认设置为npm,这可能不适用于您的设置。

解决方案: 帮助Vega Studio识别您的程序包管理器:

  1. 手动安装依赖项(对于npm为npm install,对于yarn为yarn install)。
  2. 在monorepo根目录中放置一个适当的(甚至是空的)锁定文件(package-lock.json或yarn.lock)。

构建失败,出现“Turbo module tgz dependency not found or malformed”错误

原因: 构建系统无法找到或处理您的package.json依赖项中引用的.tgz文件。

解决方案: 请将指向tgz的文件指针替换为最新的程序包版本:

已复制到剪贴板。

// 将
"@prefix/module-name": "file:...../prefix-module-name-0.0.1.tgz"
// 替换为
"@prefix/module-name": "*"

在monorepo设置期间npm安装失败

原因: 未安装npm、.npmrc配置不正确,或父目录中存在文件冲突。

解决方案:

  1. 验证npm是否已安装:

    已复制到剪贴板。

    npm -v
    
  2. 验证.npmrc是否存在且正确。

  3. 删除父文件夹或HOME文件夹中冲突的文件或目录:

  • package.json文件
  • node_modules目录
  • npm工件

在monorepo设置期间yarn安装失败

原因: yarn版本错误、未安装yarn或配置文件冲突。

解决方案:

  1. 确认您已安装yarn v2+:

    已复制到剪贴板。

    yarn --version
    
  2. 卸载yarn 1(如果有):

  3. 使用corepack安装Yarn(Node版本14+):

    已复制到剪贴板。

    corepack enable
    
  4. 在package.json中,指定正确的程序包管理器:

    已复制到剪贴板。

    "packageManager": "yarn@x.y.z"
    
  5. 准备好yarn:

    已复制到剪贴板。

    corepack prepare yarn@x.y.z --activate
    
  6. 在monorepo根目录中创建一个空的yarn.lock文件。
  7. 删除父文件夹或HOME文件夹中冲突的文件或目录:
  • package.json、package-lock.json和yarn.lock
  • node_modules目录
  • npm工件

安装Yarn依赖项时构建失败

原因: yarn存储库配置错误,或.yarnrc.yml文件中缺少身份验证令牌。

解决方案:

  1. 正确配置yarn存储库(.yarnrc.yml文件)。

    有关说明,请参阅配置Yarn工作区

  2. 根据需要将以下配置添加到.yarnrc.yml中:

    已复制到剪贴板。

    npmRegistries:
    "https://k-artifactory-external.labcollab.net/artifactory/api/npm/kepler-npm-prod-local/":
    npmAuthToken: "<Kepler令牌>"
    

使用Metro打包器时,在打包步骤中构建失败。

原因: 由于路径配置不正确,Metro打包器无法解析monorepo结构中的依赖关系。

解决方案: 在metro.config.js中配置依赖项:

已复制到剪贴板。

const path = require('path');

const config = {
    projectRoot: __dirname,
  watchFolders: [
    path.resolve(__dirname, '../../packages'),
    path.resolve(__dirname, '../../node_modules')
  ],
  resolver: {
    disableHierarchicalLookup: true,
    nodeModulesPaths: [
      path.resolve(__dirname, 'node_modules'),
      path.resolve(__dirname, '../../node_modules')
    ]
  }
};


Last updated: 2025年9月30日