问题
When I just run middleman
to serve, all.css
gets compiled fine, consisting of just a call to +box-shadow(none)
:
/* line 1, /home/yang/asdf/source/stylesheets/content.css.sass */
div {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none; }
But when I build the site, I get this Sass/Compass error:
$ middleman build
Slim::EmbeddedEngine is deprecated, it is called Slim::Embedded in Slim 2.0
Slim::EmbeddedEngine is deprecated, it is called Slim::Embedded in Slim 2.0
Slim::EmbeddedEngine is deprecated, it is called Slim::Embedded in Slim 2.0
/home/yang/asdf/source/stylesheets/content.css.sass:2:in `box-shadow': Undefined mixin 'box-shadow'. (Sass::SyntaxError)
(in /home/yang/asdf/source/stylesheets/content.css.sass:2)
from /home/yang/asdf/source/stylesheets/content.css.sass:2
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:253:in `visit_mixin'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:37:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:100:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `map'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:37:in `block in visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:320:in `visit_rule'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:37:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:100:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `block in visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `map'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:53:in `visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:109:in `block in visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:121:in `with_environment'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:108:in `visit_children'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:37:in `block in visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:128:in `visit_root'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/base.rb:37:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:100:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/visitors/perform.rb:7:in `visit'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/tree/root_node.rb:20:in `render'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/engine.rb:315:in `_render'
from /var/lib/gems/1.9.1/gems/sass-3.2.7/lib/sass/engine.rb:262:in `render'
from /var/lib/gems/1.9.1/gems/sprockets-sass-0.9.1/lib/sprockets/sass/sass_template.rb:40:in `evaluate'
from /var/lib/gems/1.9.1/gems/tilt-1.3.7/lib/tilt/template.rb:77:in `render'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/context.rb:197:in `block in evaluate'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/context.rb:194:in `each'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/context.rb:194:in `evaluate'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/processed_asset.rb:12:in `initialize'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:374:in `new'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:374:in `block in build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:395:
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:373:in `build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:94:in `block in build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/caching.rb:51:in `cache_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:93:in `build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:287:in `find_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:61:in `find_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/bundled_asset.rb:16:in `initialize'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:377:in `new'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:377:in `build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:94:in `block in build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/caching.rb:51:in `cache_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:93:in `build_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/base.rb:287:in `find_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/index.rb:61:in `find_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/environment.rb:75:in `find_asset'
from /var/lib/gems/1.9.1/gems/sprockets-2.9.2/lib/sprockets/server.rb:47:in `call'
from /var/lib/gems/1.9.1/gems/middleman-sprockets-3.0.11/lib/middleman-sprockets/extension.rb:200:in `call'
from /var/lib/gems/1.9.1/gems/rack-1.4.5/lib/rack/builder.rb:134:in `call'
from /var/lib/gems/1.9.1/gems/rack-1.4.5/lib/rack/urlmap.rb:64:in `block in call'
from /var/lib/gems/1.9.1/gems/rack-1.4.5/lib/rack/urlmap.rb:49:in `each'
from /var/lib/gems/1.9.1/gems/rack-1.4.5/lib/rack/urlmap.rb:49:in `call'
from /var/lib/gems/1.9.1/gems/middleman-more-3.0.13/lib/middleman-more/extensions/minify_javascript.rb:51:in `call'
from /var/lib/gems/1.9.1/gems/middleman-more-3.0.13/lib/middleman-more/extensions/minify_css.rb:50:in `call'
from /var/lib/gems/1.9.1/gems/rack-1.4.5/lib/rack/builder.rb:134:in `call'
from /var/lib/gems/1.9.1/gems/rack-test-0.6.2/lib/rack/mock_session.rb:30:in `request'
from /var/lib/gems/1.9.1/gems/rack-test-0.6.2/lib/rack/test.rb:230:in `process_request'
from /var/lib/gems/1.9.1/gems/rack-test-0.6.2/lib/rack/test.rb:57:in `get'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli/build.rb:259:in `block in execute!'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli/build.rb:256:in `each'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli/build.rb:256:in `execute!'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli/build.rb:198:in `invoke!'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/actions.rb:95:in `action'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli/build.rb:65:in `build'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/task.rb:27:in `run'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/invocation.rb:120:in `invoke_task'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor.rb:275:in `dispatch'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/base.rb:425:in `start'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli.rb:77:in `method_missing'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/task.rb:29:in `run'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/task.rb:126:in `run'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/invocation.rb:120:in `invoke_task'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor.rb:275:in `dispatch'
from /var/lib/gems/1.9.1/gems/thor-0.15.4/lib/thor/base.rb:425:in `start'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/lib/middleman-core/cli.rb:22:in `start'
from /var/lib/gems/1.9.1/gems/middleman-core-3.0.13/bin/middleman:18:in `<top (required)>'
from /usr/local/bin/middleman:19:in `load'
from /usr/local/bin/middleman:19:in `<main>'
I have reproduced this in the following small simple example, which I've also included as a base64-encoded tar.gz at the bottom if you want to repro locally. It also includes the full backtrace.
Here's the tree of files:
asdf
├── config.rb
├── config.ru
├── error
├── Gemfile
├── Gemfile.lock
├── source
│ └── stylesheets
│ ├── all.css.sass
│ └── content.css.sass
Here are all the file contents:
config.rb:
require 'animate-sass'
require 'susy'
require 'slim'
set :css_dir, 'stylesheets'
set :js_dir, 'javascripts'
set :images_dir, 'images'
set :fonts_dir, 'fonts'
configure :build do
activate :minify_css
activate :minify_javascript
activate :relative_assets
require "middleman-smusher"
activate :smusher
config.ru:
require 'rubygems'
require 'middleman/rack'
run Middleman.server
Gemfile:
source :rubygems
gem "slim"
gem "susy"
gem "animate-sass"
gem "middleman", "~>3.0.13"
gem "middleman-smusher"
Gemfile.lock: see tar.gz
all.css.sass:
@import compass/css3/box-shadow
@import content
content.css.sass:
div
+box-shadow(none)
Here's the base64-encodede tar.gz, which you can decode with base64 -d
:
H4sIADhQcFEAA+0ca3Mbt1Gf+SsQujOiW/GePFLixJo4juK2Ezsau55+vEJ3oAjrHixwJ0uZTH57
F497UZRFSTzZbrAfbBIL7Au7e7s4iJjHC5swlrO93sABmE4n4n93Frj6f0+OO47nBL6/53quP3EC
x/FhnusGXrCHnP5EaqDkBWYI7V3j7Pxz8+7Cf6PwF5TSOE5IijN0VtIkHrxPaDqfn6RnJI5JfJKd
04wgylFMVoxEuCDxAaKFGIlwkpAYdRcgmskR5FnOV0vLXuYpscWW2lgEAM9LFhGbF9cJ4UtCCm5H
eVaQrLAizi2OOZ97c6Dwn7P8asyXOM4/7c/RhywmCxAjBiNeAXa/hbXQ6L1YNn9/nRX46kSE2PMB
QiOY9yD2YrGCBcvTh9FYI3GJmZ3QM/ucpNx2rSPLVR/F5LFvedZMosVXu2CE2JeU0yJn3F4RtshZ
arGzuRf40jISF0pD7O+MzxnmRDDxZw2P3VFvaeE6Th8cKvm1jc6SPLoQnqiMFS0h4BjpwV6aX4pX
vdHuS4XOphw9jdnaPD1X8vxEi2VIskvK8iyFKOpJwcNebbkWPl079qKR77XiKGRlQkwyMMnAJIM/
ZTJwvbZGLM97CKZvNRm0OOxSA2HkMMtjaRudi8GLYsIeQ5rIalua2w0kzXCXRL2p9xBBVww8GArd
saTuSIykXiEUH/FPWJB0lUCTINhNlFnIJU5KGNqWX0GTYuxavtZBfLXbZGezRynhwaC3Jr+s4K8K
6YZHa2F7X/HvwWmi7IOjZX/Edyq9+EA4J3EIe00UI+VSNKMFxQn9bUecmrSj9MjIp34I1/ssu3Kl
1445HalQjiiLygSzUPTNIUwrSFTQfPsnz5Z66apn1+pQCLcrweGob8NFEBA0O5dlj6oLxAjpR5me
rFVth3eo0skCOPaiwNTthf5ZmcVJJ86nPcf5rK84n5l4MPHwWPqtpkTWIEEvXDhhl4TJ2mmmNzpJ
tiVdHzCPGya+5ViuqtY2oG0oFkjG4Rmkqljn3jwZji6gVptYgUSLr7b0HaWF6092QrJkCXTVcnvX
gm13lCdH967GtiL4sC1Mc0bU7vlruycwzcaJNRldXIcf8SXmEaOropMnnoS3OPgWTL8e/ykIL6BT
meoIk3RTcJmQQ/mq/d2vurb/ljD70eTFmAwjTVfXyuGu6QcqM5xvn3Oa/Ytu3VmBsaOEKuur9w1r
50DkikRlQb7rm+303nH4SE5Popd7dKgLqMv8YntmxTJn4AluYE1UNwzfbSz7BhlzurfA9+okHqbB
NGhKg0eJX2B+ITdAN/Ll1oJvJCcsGuFCR7WrD2OUnUPB6zHUlZxK85jyFS62d8uN0laF0MRTRMVr
8V4iuXVUkhJgHYcphdyXne9m7452sncVOdebGl/o1xc8b1c8zmjWYOauymvfF/kKjcTDjjISPz9e
Z1FyYAF7k6wvV46U5PhGUrljyfcpphnw+dJXO7YCeXcgyrMFFX1cPzw+f//H8R1/Ku//+NPZxJsE
e47reVPX3P95Cnj27NngGXqVpytoFwfiG3x9X/JrdM5ozEV9VSPRz5TxYo4gBGEc7JYkiIup4/GK
kcFABxnaxxlNcUHkufx+Myzm7gv6r5ZgTFIRRsr9SibzI6AjNR6qcRTn6Hf18XdAIj3dystiVRah
vPCCXqC5XBUVMIVk8WCgFDvFwCdfybLkACX4GlbBB5xQSHEc4SxGUA9fUaJ1b2RNaCplPSVsvBJU
1GIUSdn5fCDI/5sWS5TlGgcDcubQhhS8tIvcXtCEWMsiTYYHaK4JvDhGC5xw0hDASUFYBtpfkvtS
mufFkrBqESx7icQK9GlJI0E4QUsMVGES4jhtkZdvNDWdOY6hYQI7S/NqxnLM/uuwtic6BUNdo9EC
X5DnSMjDGzGLJeXSTOMl5uMsH9cvRiqZV3I1iDysX5qMG6Uq5j9IwUPBI5SkX6DhO/lCBQoEhJFA
KJ6fpOUQPCEoPkvIsLvvfyfJirDaoV+WRQ4eSSMEjgmLY5rqVhHlmRqDp/A5WsplsEDUrZcgItim
WhqqaZz+BorDlDeyeBH3z9QVMLCgMLMiwZFqTzD4EjTANBEyyilad2G7aqrWHQghnqckrKUQMBSq
gPJD+V2oqBXlBHYOOtwwpuwAHLa5+LWvkR8rXNOD1zipTIVXXyrUIs+KCiM/AwKY/ijq6zFfkYgu
wJDdoK2+gcFkHS50QggyRs6gP8OgMznQoSOtVIW+CmKkgngBk2OySvJrcZwF65tdaBr6gaT7Rn5H
/6wVE/uo7i9uWNbor1afZHI75GklrOIQfnK8WagOMjVK4j5wghhJVJR+ePcL7zCqMOrQTQsplGTQ
aqPTt68h1yyAVi3jxmTaOgpLS9hLIVWVkYY3kMOOBNUKSftXhkqQF4OjLxaEgTW144vkIGfInV4W
xSoUQwcQla/UbUFbOYM9HICXfemnk4G+oVP/lf3wuKP+c1zHu1H/zXxT/z0F1AUPK8+uRW/Vqtfq
jCMP+uApAF0wZF49aKmXAt9Gm2PgFpDx/5qkohTri8ed8R/M1uLfnU1N/D8JqD8bgAJGh/9gIAqS
oWh/hvojdG36Y7uv00N1joAaf/jHsTqJWcc1FcuXVtfAGrTj3xItSw887oj/wHed9ef/zJma+H8K
eH3yRjYZaV6QORINwdy2q2Rg5ezcBrRo+vhcnoLKhoPwcrXKWYFG4kqn61d/mkTdwwyNXiDxhtCt
BtMyKWj4kUODNvrjGLmWozDtZIJGkDaaJfoACI2OBS3XtQKFiZZldnEdrrJzNHKB86EezqHJAUKq
ERx5gHEaUi3cWGU7jRLv1z7ymxT0LMHCt/yKhZYIxAH6NfWWQFK3GrPgPNXye9asGlW6wky/UlYJ
IXhNGqFvM5kiKii6emSJ0wSNYGnDWdxLVTh6QZSdNE62ewxabuhDhSKtRaLAk+ICr0aOkiVhmpfQ
PQoxJN+GUpRQ0VeCuWsrqf1v7b5SwbVmlQkSCh21nDOrFqWYlRdlZxkYSv7R3LpEzZ8qjtSDpjZY
532AcMHb8Okd+PoOit4mp3KydRZdAmthIZd61rRCq1trTO9mrWVlDWnc2iDVbsi5k2Z2/QZeL2iZ
i52NF5xcknqnjhpi4o2OHhVvedpuonn4laDrZurquBZmsPTOSKsZtIh0QrsVS1UkaLVrusrFj8WW
uY1FlatpOzgH6Hv5oSZWOVU1YVtHWeGY0SwfV0dzMplBoKxFsJbGayLlPKELWu+wd9OiugRSRr0p
j6bZQtULpA4T6+gGxcZV1XWq27xdU24mdJ3cs24ixnWmktfqNetWWhIxra1d2UxZtGuuzXHR7G07
IykXbSUlTjNcMFw7kbvZpb2NLu10has3tCtf243WfaDykPYKFZnyYlAzMG7uTAtc0OgnsM00Fbsd
P23n3YqgzNrgCFWstoO7Fdlqh/zm8VKbqxXR3VzSySRtoZXNNtnxAEnh6ggWjYHicFhPF0fapI61
jWTq5ZVTtzy6+zgBdq2kIJytFvpCPblb3ivvKtZU5POu+xi+7UnasYuzQWL3AH33ou1I66HRioub
AbWRoqYjXpiN3GZ7P5cTW9mmJlo9GlvPxWoHhPk1VRUi7ZSvRJF/v6IGmpzltmuUKg9LYfzPFCV6
S1tFQqtC0L4/OP3l5b9+/vXdm/eiyoSycjD46eT05O1PJ29f/eNEDLbLwEEnIernr0rOm47GhS8O
lEVNY/lAaP92QF88RJM3mwW3nv8A6N//mAQT15fnP4G/h4K+BGrDn7z/u+23I3bJ4/77P/G9mdn/
p4Db9h8nSf27IY/lcdf5rzOt93/iBuL3f6ZBYM5/ngR+oKkszXUNYsOe+3bzMzaDBi/fDpvn7P8Z
bPvbQY/hcWf8+3X8+7MpjLuzibn/9zQQ00soof/WRPwoyzPy3MS5AQMGDBgwYMCAAQMGDBgwYMCA
AQMGDBgwYMCAAQMGDBgwYMCAAQMGDBgwYMDAVwr/A5doTQIAeAAA
Thanks in advance for any help!
回答1:
This turned out to be due to some files that aren't meant to be output having names that do not start with an underscore. E.g., content.css.sass
should be _content.css.sass
, so that middleman
knows not to try to build that file directly. (We aren't really familiar with middleman
etc. - this was a bundle handed to us, so it took a while to track this down.)
回答2:
So I bumped into this and wanted to give a more precise answer:
Any @import
ed file in the chain downstream from a non-underscore named file will break with an error such as Sass::SyntaxError
Undefined Variable
or Undefined mixin
.
It's as simple as making sure every file in the chain starts with an underscore; sometimes very easy to pass by!
来源:https://stackoverflow.com/questions/16095388/why-does-middleman-serve-work-but-middleman-build-fails-to-compile-this-sas