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

Rails 7配置GitHub CI/CD时遇ESbuild依赖解析错误求助

修复GitHub CI中ESbuild无法解析stimulus-clipboard的问题

可行解决步骤

1. 确认stimulus-clipboard已加入项目依赖

CI环境执行yarn install时未拉取到该包,先检查本地package.json是否包含stimulus-clipboard,若没有则在本地执行:

yarn add stimulus-clipboard

提交更新后的package.json和yarn.lock到仓库,确保CI能安装到该依赖。

2. 配置ESbuild排除外部依赖(无需打包该包时)

若stimulus-clipboard通过其他方式加载,无需打包进assets,可修改ESbuild命令添加--external参数:

esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets --external:stimulus-clipboard

如果使用Rails的esbuild配置文件,在esbuild.config.js中添加外部依赖声明:

const esbuild = require('esbuild')

esbuild.build({
  entryPoints: ['app/javascript/application.js'],
  bundle: true,
  sourcemap: true,
  format: 'esm',
  outdir: 'app/assets/builds',
  publicPath: '/assets',
  external: ['stimulus-clipboard']
}).catch(() => process.exit(1))

3. 检查Stimulus控制器注册是否正确

确认application.js中正确注册了stimulus-clipboard控制器:

import { Application } from '@hotwired/stimulus'
import Clipboard from 'stimulus-clipboard'

const application = Application.start()
application.register('clipboard', Clipboard)

4. 调整CI步骤执行顺序

将yarn依赖安装单独拆分出来,确保依赖加载完成后再执行测试流程:

steps:
  - uses: actions/checkout@v4
  - name: Setup Ruby
    uses: ruby/setup-ruby@v1
    with:
      bundler-cache: true
  - name: Install yarn dependencies
    run: yarn install --frozen-lockfile
  - name: Run Tests
    env:
      DATABASE_URL: postgres://postgres:password@localhost:5432/test
      RAILS_ENV: test
    run: |
      bin/rails db:test:prepare
      bin/rails test

本地验证

先在本地模拟CI环境测试,确认问题修复后再推送代码:

RAILS_ENV=test yarn install
RAILS_ENV=test bin/rails test:prepare

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:47:09