从 rails 5.1.7 中的资产管道迁移后,无法使用 webpacker 使 javascript 正常工作

Got*_*tey 5 ruby-on-rails asset-pipeline webpack ruby-on-rails-5 webpacker

尝试编译时,所有图像都出现以下错误:

rails assets:precompile
Run Code Online (Sandbox Code Playgroud)
ModuleNotFoundError: Module not found: Error: Can't resolve 'core-js/modules/es.symbol' in '/***/app/javascript/packs'




            Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.scss doesn't exist
            .css
              Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.css doesn't exist
            .module.sass
              Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.module.sass doesn't exist
            .module.scss
              Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.module.scss doesn't exist
            .module.css
              Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.module.css doesn't exist
            .png
              Field 'browser' doesn't contain a valid alias configuration
              /*/app/javascript/core-js/modules/es.symbol.png doesn't exist
            .svg

Run Code Online (Sandbox Code Playgroud)

所以我得到

Webpacker::Manifest::MissingEntryError in Pages#home
Run Code Online (Sandbox Code Playgroud)

我已经通过添加我的 gemfile 安装了 webpacker

gem 'webpacker'
Run Code Online (Sandbox Code Playgroud)

bundle
bundle exec rails webpacker:install
yarn upgrade
yarn install
Run Code Online (Sandbox Code Playgroud)

app/javascript 中的文件夹包没有创建,所以我自己创建了它并将我当前在 app/assets 中的 application.js 添加到 app/javascript/packs/

我将此添加到文件的顶部:

import 'core-js/stable'
import 'regenerator-runtime/runtime'
const images = require.context('../images', true)
const imagePath = (name) => images(name, true)
Run Code Online (Sandbox Code Playgroud)

我确实用

javascript_pack_tag 
Run Code Online (Sandbox Code Playgroud)

或者

asset_pack_path
Run Code Online (Sandbox Code Playgroud)

但我的清单文件看起来像:

{
  "application.js": "/packs/js/application-e4e1539847422.js",
  "application.js.map": "/packs/js/application-e4e15391747422.js.map",
  "entrypoints": {
    "application": {
      "js": [
        "/packs/js/application-e4e15391a97422.js"
      ],
      "js.map": [
        "/packs/js/application-e4391598747422.js.map"
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

没有改变任何明显的图像被正确编译,当我可以访问我的应用程序时,javascript 不起作用。

yos*_*dyo 3

删除此文件和文件夹:

/node_modules
/tmp/cache
yarn.lock
Gemfile.lock
Run Code Online (Sandbox Code Playgroud)

然后运行:

bundle install
rails webpacker:install
rails assets:precompile
rails webpacker:compile
Run Code Online (Sandbox Code Playgroud)