2016-09-12 6 views
1

Node.js 앱이 있습니다. 나는 잠시 동안이 응용 프로그램을 제작 해 왔으며 현재 Swig을 뷰 엔진으로 사용합니다. 다음 코드를 사용하여 뷰 엔진으로 설정합니다.Node.js - Swig에서 Express Nunjucks로 마이그레이션

// Use swig.  
const swig = require('swig'); 
app.engine('html', swig.renderFile); 
if (app.get('env') === 'development') { 
    swig.setDefaults({ cache: false }); 
} 

app.set('views', path.join(__dirname, '../views')); 
app.set('view engine', 'html'); 

이 코드는 잘 작동합니다. 그러나 일부 가동 중지 시간이 있으므로 지금은 Nunjucks으로 마이그레이션하는 것이 좋습니다. 그래서 위의 내용을 다음으로 대체했습니다.

// Use nunjucks.  
const nunjucks = require('nunjucks'); 
app.engine('html', nunjucks.renderFile); 
if (app.get('env') === 'development') { 
    nunjucks.setDefaults({ cache: false }); 
} 
app.set('views', path.join(__dirname, '../views')); 
app.set('view engine', 'html');  

사이트를 시작할 때 오류가 발생합니다. 오류 :

throw new Error('callback function required'); 
    ^

Error: callback function required 
    at EventEmitter.engine (C:\MyProject\node_modules\express\lib\application.js:294:11) 
    at EventEmitter.module.exports (C:\MyProject\src\index.js:16:9) 
    at EventEmitter.configure 
... 

내가 뭘 잘못하고 있니? 어떤 콜백이 필요합니까? Nunjucks 엔진을 사용하기 시작하면 구문 오류가 발생할 것입니다. 그러나 Nunjucks 엔진을로드하는 방법을 파악하려고합니다.

답변

1

일반적으로 템플릿 엔진에는 자체 구성 방법이 있습니다. Nunjucks의 경우 다음을 사용해야합니다.

const nunjucks = require('nunjucks'); 

nunjucks.configure('views', { 
    express : app, 
    noCache : app.get('env') === 'development', 
    ... 
}); 

문서 here