2014-12-18 2 views
10

express와 함께 작동하는 노드 - 흉포 - 미들웨어를 얻으려고합니다. 앱이 오류없이 실행됩니다.node-sass-middleware가 컴파일되지 않습니다

...(modules) 
var sassMiddleware = require('node-sass-middleware'); 

var routes = require('./routes/index'); 

var app = express(); 

// uncomment after placing your favicon in /public 
//app.use(favicon(__dirname + '/public/favicon.ico')); 
app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(cookieParser()); 
//---- LOAD SASS -----// 
// adding the sass middleware 
var srcPath = __dirname + '/scss'; 
var destPath = __dirname + '/public/stylesheets'; 
app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
})); 

app.use(express.static(path.join(__dirname, 'public'))); 

누구나 내가 흉한 소리를 컴파일하는 방법을 잘못 본 사람이 있습니까?

파일 구조 :

app 
controllers 
routes 
public 
-stylesheets 
scss 
... 
+0

어떤 Express 버전을 사용하고 있습니까? 예를 들어 사용하고있는 package.json은 2.7.9를 연결합니다. 당신이 app.use처럼 뭔가를해야 할 수 있도록 규칙은 많이 변경 (sassMiddleware을 ({ SRC : srcPath, 대상 : destPath, 디버그 : 사실, outputStyle : '압축' })()); – jusynth

답변

7

이 app.js 어떻게해야입니다 :

app.use(sassMiddleware({ 
    src: srcPath, 
    dest: destPath, 
    debug: true, 
    outputStyle: 'compressed' 
}), 
express.static(path.join(__dirname, 'public'))); 

은 또한 주하는 SCS 파일은 style.scss 이름과하는 SCS/스타일/디렉토리 안에 있어야한다. grunt-sass에 대한

source : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
    dest : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    read : /Users/abc/Desktop/SO/SO_node/public/stylesheets/stylesheets/style.css 
    render : /Users/abc/Desktop/SO/SO_node/scss/stylesheets/style.scss 
+0

당신의 솔루션은 매력처럼 작동했습니다. 'node-sass-middleware' 사용법의 정확한 구조가 거의 어디에도 존재하지 않는 것은 아이러니합니다! 이것은 내가 발견 한 유일한 예입니다! –

+0

주요 문제는 * .scss 파일의 경로입니다. 중복 된 이름 "scss/stylesheets /" – Volodymyr

0

더 나은 이동 : 모듈을 올바르게 장착 한 경우

당신은이 같은 로그를 볼 수 있습니다. 간단한 구성, 자동화 된 작업 (덕분에 감사) 및 libsass (SASS 용 원래 Ruby 컴파일러의 C 버전)으로 인해 컴파일 시간이 단축되었습니다. 0.3 초 ​​대신 3

1

의 문제에 말대꾸/SCS들 파일을 컴파일 또한 scss

대신 sass 컴파일 할 것인지 될 수 있습니다. 따라서 indentedSyntax에서 false으로 설정하십시오.

app.use(require('node-sass-middleware')({ 
    src: path.join(__dirname, 'scss'), 
    dest: path.join(__dirname, 'public'), 
    indentedSyntax : false, 
    sourceMap: true 
})); 

또는 완전히 삭제하십시오. Express-generator는이 값을 기본적으로 추가합니다.

관련 문제