【发布时间】:2016-08-15 04:59:19
【问题描述】:
我正在使用 Sass 构建一个 Express 应用程序,并且自从我上次编译我的 .scss 和 .css 文件以来,我没有对我的项目进行任何更改。
命令:
sass sass/style.scss style.css
上次我在我的项目上工作时正在工作,但今天我收到了这个错误:
Errno::ENOENT: No such file or directory @ rb_sysopen - sass/style.scss
Use --trace for backtrace.
再一次,自从上次工作以来,我没有进行任何新的更改,我什至恢复到以前的 git 提交。
在我的 app.js 中,node-sass-middleware 配置如下:
var sassMiddleware = require('node-sass-middleware');
还有这个:
app.use(sassMiddleware({
src: path.join(__dirname, 'public/stylesheets/sass'),
dest: path.join(__dirname, 'public/stylesheets'),
debug: true,
indentedSyntax: true,
outputStyle: 'compressed',
prefix: '/stylesheets'
}));
app.use(express.static(path.join(__dirname, 'public')));
我在My-Website/public 中的public 文件结构如下:
├── public
└── stylesheets
├── sass
└── style.scss
├── style.css
└── style.css.map
另外,在我的views 文件夹中的layout.hbs 文件中(我正在使用 Express 的车把模板语言),我脑子里有这个链接:
<link rel='stylesheet' href='/stylesheets/style.css' />
发生了什么事?
【问题讨论】:
-
看来你打错了:
stylesheets/sass/style.scss,而不是sass/style.scss -
这会导致同样的错误。根据对这个问题的回答:stackoverflow.com/questions/30654312/…,我的印象是 Sass 会在
My-Website/public/stylesheets(即中间件配置中的dest)处寻找编译后的style.scss。 -
这里有多个组件,命令
sass和node-sass-middleware,它使用sass命令编译工作表。在帖子的开头,您引用了sass命令不起作用,然后您转换到您的快速脚本,我认为这意味着它也不起作用。检查您当前的工作目录,并确保在运行第一个命令时它是public/stylesheets/ -
成功了,谢谢!澄清一下,唯一的问题是 sass 命令不起作用。中间件被包括在内,以防出现问题。但无论哪种方式,问题都解决了。
-
我会将我的评论粘贴到答案中,以便您将其标记为已回答(这是标准做法,IIRC)
标签: node.js express sass handlebars.js