问题
I have a typical rails 6.0.2 app set up on a production server and I'm using git hooks to deploy the app. When I try to run: rails assets:precompile
I get the following error:
rake aborted!
Sprockets::ArgumentError: link_directory argument must be a directory
/home/user/myapp/app/assets/config/manifest.js:2
Here is the manifest.js file
//= link_tree ../images
//= link_directory ../stylesheets .css
I cant figure out what Im doing wrong. Unless I'm mistaken, doesn't webpacker replace sprockets?
回答1:
In manifest.js
, your error tells that in manifest.js
line 2, link_directory
argument must be a directory, and not a file. It should probably look like this
//= link_directory ../stylesheets .css
If you notice there is gap between stylesheets
and .css
, it means that link all the css
files from stylesheets
directory, there must be some formatting problem in your code. Fix it and it should work!
回答2:
double check all the asset folder for an empt .keep
file
common culprit could be images folder
this post may also help out
require_tree argument must be a directory in a Rails 5 upgraded app
回答3:
For anyone else who got this error, I simply added a directory in assets
, called stylesheets
, and added a file .keep
within it. That fixed my problem.
来源:https://stackoverflow.com/questions/60216082/rails-6-webpacker-in-production-rake-assetsprecompile-fails