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

Rails集成React对接Shopify API遇Webpacker资源缺失错误求助

Hey,我之前在做Rails+React+Shopify嵌入式应用的时候也踩过Webpacker的这个坑,给你梳理几个针对性的排查和解决步骤,应该能帮你搞定:

解决Webpacker::Manifest::MissingEntryError(找不到hello_react.js)

这个错误的核心是Webpacker生成的manifest.json里没有hello_react.js的条目,但你的视图模板却在引用它。结合你的场景,咱们一步步来排查:

1. 先确认packs目录的文件是否存在且正确

首先去app/javascript/packs/目录下看看,有没有hello_react.js这个文件:

  • 如果文件不存在:直接创建它,先写一段最基础的测试代码就行,比如:
    import React from 'react'
    import ReactDOM from 'react-dom/client'
    
    document.addEventListener('DOMContentLoaded', () => {
      const root = ReactDOM.createRoot(document.getElementById('hello-react'))
      root.render(<h1>Hello React!</h1>)
    })
    
  • 如果文件存在:仔细核对文件名的拼写(Unix系统大小写敏感,别把Hello_React.js写成hello_react.js)

2. 重新执行Webpacker的编译流程

Webpacker经常会因为缓存或者未正确编译导致manifest没更新,按以下步骤操作:

  • 先关掉所有正在运行的Rails服务器和Webpack相关进程
  • 清理Webpacker的缓存:
    rails webpacker:clean
    
  • 然后执行完整的编译:
    rails webpacker:compile
    
  • 开发环境下更推荐启动Webpack的watch模式(文件改动会自动重新编译),启动后别关掉,再重启Rails服务器:
    ./bin/webpack-dev-server
    

3. 检查Webpacker的配置文件

有时候config/webpacker.yml的配置会限制打包的入口文件,核对这几点:

  • 确认source_path是app/javascript(默认应该是,但还是要检查)
  • 查看entry_points部分,确保hello_react被包含进去,如果没有的话手动加上:
    entry_points:
      application:
        - packs/application.js
      hello_react:
        - packs/hello_react.js
    

4. 核对视图模板里的引用代码

你的报错出现在embedded_app.html.erb第7行,检查这一行:

  • 确认用的是<%= javascript_pack_tag 'hello_react' %>,别写错成其他路径或者文件名
  • 另外,Shopify嵌入式应用的环境下,要确保资产主机配置正确,在config/environments/development.rb里加上:
    config.action_controller.asset_host = 'http://localhost:3000'
    
    同时,webpack-dev-server的端口要和Rails的端口匹配,或者启动时指定端口,比如:./bin/webpack-dev-server --port 3035

5. 检查React相关依赖是否齐全

如果依赖缺失,Webpack编译会失败,自然生成不了对应的entry:

  • 执行Webpacker的React安装命令:
    bundle exec rails webpacker:install:react
    
  • 同时检查package.json里有没有react、react-dom、@babel/preset-react这些依赖,如果没有,手动安装:
    yarn add react react-dom
    yarn add --dev @babel/preset-react
    

6. 查看Webpack编译的详细日志

如果以上步骤都没解决,执行编译命令时加上--verbose看详细输出:

rails webpacker:compile --verbose

编译失败的话,日志里会明确告诉你原因,比如语法错误、依赖找不到、配置问题等,这是排查最直接的方式

按照你说的教程步骤,大概率是编译环节没做对,或者entry文件没被Webpack识别。先从检查packs目录和重新编译开始,这两个是最常见的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:54:13