web-dev-qa-db-fra.com

Vanille Rails 6.0: "commande d'erreur" webpack "introuvable"

Système:

Rubis: 2.6.3p62 (rvm)
Rails: 6,0
OS: macOS 10.14.6

Installer

Une nouvelle application Rails 6.0:

$ Rails new testshop2
$ cd testshop2
$ Rails g controller Page index
$ Rails s
=> Booting Puma
=> Rails 6.0.0 application starting in development 
=> Run `Rails server --help` for more startup options
Puma starting in single mode...
* Version 3.12.1 (Ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop

Lorsque je navigue vers ` http: // localhost: 3000/page/index ', le système passe par cette erreur:

Started GET "/page/index" for ::1 at 2019-09-23 17:06:12 +0200
  (0.4ms)  SELECT sqlite_version(*)
Processing by PageController#index as HTML
  Rendering page/index.html.erb within layouts/application
  Rendered page/index.html.erb within layouts/application (Duration: 1.8ms | Allocations: 206)
[Webpacker] Compiling…
[Webpacker] Compilation failed:
error Command "webpack" not found.

Completed 500 Internal Server Error in 2021ms (ActiveRecord: 0.0ms | Allocations: 640080)



ActionView::Template::Error (Webpacker can't find application in /Users/stefan/Github/sandbox/testshop2/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
  unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
):
    6:     <%= csp_meta_tag %>
    7: 
    8:     <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    9:     <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
    10:   </head>
    11: 
    12:   <body>

app/views/layouts/application.html.erb:9

Comment puis-je réparer cela? Ça dit error Command "webpack" not found. mais ne devrait pas Rails installer tout le nécessaire automatiquement?

9
wintermeyer

ÉDITER:

Ceci est l'un de mes premiers messages, alors pardonnez-moi si je me trompe dans les conventions de publication.

Le problème vient de la version du nœud sur votre ordinateur local. Lorsque vous avez créé votre application Rails, vous avez probablement rencontré une erreur comme celle-ci:

The JavaScript app source directory already exists
   apply  /Users/mconiaris/.rbenv/versions/2.6.4/lib/Ruby/gems/2.6.0/gems/webpacker-4.0.7/lib/install/binstubs.rb
  Copying binstubs
       exist    bin
      create    bin/webpack
      create    bin/webpack-dev-server
      append  .gitignore
Installing all JavaScript dependencies [4.0.7]
         run  yarn add @Rails/webpacker from "."
yarn add v1.17.3
info No lockfile found.
[1/4] ????  Resolving packages...
warning @Rails/webpacker > postcss-preset-env > postcss-color-functional-notation > postcss-values-parser > [email protected]: I wrote this module a very long time ago; you should use something else.
[2/4] ????  Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version "6.* || 8.* || >= 10.*". Got "9.4.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

Dans mon cas, la version 9.4.0 du nœud était installée sur mon ordinateur et c'était la seule version avec laquelle le package get-caller-file ne voulait pas travailler.

Pour résoudre le problème, confirmez d'abord votre version du nœud pour vous assurer qu'il ne s'agit pas de 9.x.x:

node -v

Mettre à jour le nœud (j'utilise nvm, mais il y a autres façons sur GitHub sur le nœud Site Web).

nvm install node # "node" is an alias for the latest version

Vérifiez à nouveau la version. Si c'est 12.10 ou plus, vous devriez être prêt.

Allez démarrer un autre nouveau projet Rails et cela devrait fonctionner correctement.

Bonne chance!

4
Mike

J'ai fini par enlever le fil. Après avoir résolu l'erreur présentée dans cette question, j'ai eu un autre problème avec le fil. Je ne sais pas si je dois cross-poster ma solution, car c'est la même chose. ou simplement y lier

https://stackoverflow.com/a/58100373/683982

J'espère que cela aide quelqu'un

1
Mathieu J.

J'ai également eu ce problème lors d'une nouvelle installation 6.0, dans mon cas, cela n'avait rien à voir avec le nœud ou le fil à ma connaissance. J'ai remarqué qu'il n'y avait aucune mention de webpack dans package.json, j'ai donc exécuté yarn add webpack et réessayé. J'ai obtenu ce qui suit qui a dit qu'il a été compilé, mais la page ne s'est toujours pas chargée:

[Webpacker] Compiled all packs in /vagrant/revmtg/RevMtg/public/packs
[Webpacker] One CLI for webpack must be installed. These are recommended choices, delivered as separate packages:
 - webpack-cli (https://github.com/webpack/webpack-cli)
   The original webpack full-featured CLI.

J'ai donc couru yarn add webpack-cli. Puis j'ai eu Error: Cannot find module '@Rails/webpacker'.

J'ai donc supprimé le node_modules dossier, puis a exécuté bundle exec Rails webpacker:install. Après cela, cela a finalement fonctionné.

0
AFOC