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

将带Webpacker的Rails应用迁移到Vite时如何引入shopify_app?

解决Rails从Webpacker迁移到Vite后shopify_app导入失败的问题

核心问题

Vite采用ES模块规范,不兼容Webpacker依赖的CommonJSrequire语法;同时Vite的模块解析逻辑无法自动识别shopify_app的默认路径,导致解析失败。

解决步骤

  1. 配置Vite模块解析别名
    在项目根目录的vite.config.js(或vite.config.ts)中添加别名,指定shopify_app的实际路径:

    import { defineConfig } from 'vite'
    import RubyPlugin from 'vite-plugin-ruby'
    
    export default defineConfig({
      plugins: [RubyPlugin()],
      resolve: {
        alias: {
          // 情况1:若使用@shopify/app-bridge包
          'shopify_app': '@shopify/app-bridge',
          // 情况2:若shopify_app来自Shopify App Rails gem的内置JS,替换为你的gem实际路径
          // 'shopify_app': './vendor/bundle/ruby/3.2.0/gems/shopify_app-21.1.0/app/assets/javascripts/shopify_app'
        }
      }
    })
    
  2. 使用ES模块语法导入
    修改app/javascript/application.js的导入语句:

    import 'shopify_app';
    
  3. 确认依赖完整性
    如果是使用@shopify/app-bridge,确保已安装依赖:

    npm install @shopify/app-bridge --save
    # 或用yarn
    yarn add @shopify/app-bridge
    

关键说明

Webpacker会自动识别Rails gem中的资产路径,但Vite需要显式配置解析规则,所以必须通过别名或添加目录到resolve.root来让Vite找到shopify_app模块。

内容的提问来源于stack exchange,提问作者S.M. Pat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:52:34