使用具有以下目录结构的原始示例:
- node-modules
- public
|- common
| |-sass
| | |-style.scss
| |-css
- server.js
在server.js
您调用的node-sass-middleware
地方,看起来您的src
和dest
属性设置不正确。例如,
var cssLoc = __dirname + "\\public\\common\\css";
用于填充src
属性的应该是您的 *.scss 文件的路径,而是指向您的 CSS 目标目录。同样,该dest
物业,
var cssDest = __dirname + "\\public\\common";
不是指向 CSS 目录而是它的父目录。
在sass-node-middleware
您设置的块中debug: true
,您应该能够查看启动应用程序的控制台中使用的路径,以验证它们是否正确:
app.use(sass({
src: cssLoc,
dest: cssDest,
debug: true,
outputStyle: 'compressed'
}));
这可以重构为:
app.use(sass({
src: path.join(__dirname, 'public', 'common', 'sass'),
dest: path.join(__dirname, 'public', 'common', 'css'),
debug: true,
outputStyle: 'compressed'
}));
那应该将您的 SASS 编译成 CSS,但正如 SirRodge 之前的回答所提到的,您仍然有解决get
CSS 请求的路径。如果您使用的是 express.static 内置中间件,app.use(express.static(path.join(__dirname, 'public')));
要从一个名为的目录中提供文件,public
并且在您的 HTML 中您正在引用 CSS,/common/css/style.css
那么您需要将prefix
属性添加到中间件:
app.use(sass({
src: path.join(__dirname, 'public', 'common', 'sass'),
dest: path.join(__dirname, 'public', 'common', 'css'),
debug: true,
outputStyle: 'compressed',
prefix: '/common/css'
}));