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
相关产品推荐
相关产品推荐

