首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链轮::DoubleLinkError-无法链接具有相同输出路径的多个文件("application.js")

链轮::DoubleLinkError-无法链接具有相同输出路径的多个文件("application.js")
EN

Stack Overflow用户
提问于 2022-08-30 02:57:37
回答 1查看 445关注 0票数 0

Rails版本: 7.0.3.1

Ruby版本: 3.1.0p0

React版本: 18.2.0

我正在尝试添加对我现有的rails应用程序的反应,并遵循这里的教程- https://medium.com/rd-shipit/how-to-set-up-a-rails-7-project-with-react-and-jest-f2e016bfbdf3,因为我已经有了一个现有的rails应用程序,我使用这里的说明- https://github.com/rails/jsbundling-rails安装了esbuild。

代码语言:javascript
复制
Run ./bin/bundle add jsbundling-rails
Run ./bin/rails javascript:install:[esbuild|rollup|webpack]

但是,当我尝试在本地运行该应用程序时,它将失败

代码语言:javascript
复制
$ esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets
remote:
remote:          app/assets/builds/application.js      1014.9kb
remote:          app/assets/builds/application.js.map     1.6mb
remote:
remote:        Done in 0.17s.
remote:        W, [2022-08-30T02:32:56.872963 #271]  WARN -- : Removed sourceMappingURL comment for missing asset 'assets/application.js.map' from /tmp/build_54e3859f/app/assets/builds/application.js
remote:        rake aborted!
remote:        Sprockets::DoubleLinkError: Multiple files with the same output path cannot be linked ("application.js")
remote:        In "/tmp/build_54e3859f/app/assets/config/manifest.js" these files were linked:
remote:          - /tmp/build_54e3859f/app/javascript/application.js
remote:          - /tmp/build_54e3859f/app/assets/builds/application.js

我对所有的前沿工作都很陌生,以前从来没有在前线工作过。我只是在学习所有这些信息,所以我被困在这里,因为我尝试了很多事情,但都没有成功。老实说,我不懂这些东西。我试过的事情是:

  • app/javascript/application.js重命名为app/javascript/application2.js。这在本地有效,但当我按heroku.
  • Deleted application.jsapp/assets/builds/*中的application.js.map并且只保留app/assets/builds/.keep文件时,它就失败了。

app/javascript/application.js:

代码语言:javascript
复制
// Configure your import map in config/importmap.rb. Read more: https://github.com/rails/importmap-rails
// import "@hotwired/turbo-rails"
// import "controllers"
import "./react/src/index.js"

我试着取消对import "@hotwired/turbo-rails"import "controllers"的注释,但这只会产生不同的错误。

在这一点上我没有办法尝试了。我在这里错过了什么?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 15:41:29

我唯一看到的是你使用的是两个地方的Javascript:app/javascript/applications.jsapp/assets/javascript/application.js

好的方法是,就像你从app/javascript/application.js那里做的那样(不要评论@热头发和刺激控制器,这不是问题开始的地方)。

基本上,通过使用JSBundling处理Javascript的新方法,app/javascript/中的application.js文件将绑定到builds文件夹中。然后被链轮抓住进行指纹识别和压缩。

链轮还会压缩和指纹app/assets/javascript文件夹中的所有内容,最终得到两个名为相同的文件。

如果您没有app/assets/javascript文件夹,那么您的app/assets/config/manifest.js文件可能有问题。您可能会尝试将app/assets/builds文件夹和app/javascript文件夹传递给链轮。然后,您最终添加到您的应用程序,捆绑和解压缩文件。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73536663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档