Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Nunjucks - файл не найден (https://javascript.ru/forum/node-js-io-js/74171-nunjucks-fajjl-ne-najjden.html)

vdekameron 19.06.2018 17:19

Nunjucks - файл не найден
 
Добрый день. Подскажите, пожалуйста, в чем ошибка. У автора все работает. У меня в браузере выводится ошибка -

Error: template not found: index.html
at createTemplate (J:\Node\chaat\node_modules\nunjucks\src\environme nt.js:272:15)
at next (J:\Node\chaat\node_modules\nunjucks\src\lib.js:28 2:7)
at handle (J:\Node\chaat\node_modules\nunjucks\src\environme nt.js:311:11)
at J:\Node\chaat\node_modules\nunjucks\src\environmen t.js:321:9
at next (J:\Node\chaat\node_modules\nunjucks\src\lib.js:28 0:7)
at Object.asyncIter (J:\Node\chaat\node_modules\nunjucks\src\lib.js:28 6:3)
at Environment.getTemplate (J:\Node\chaat\node_modules\nunjucks\src\environme nt.js:303:9)
at Environment.render (J:\Node\chaat\node_modules\nunjucks\src\environme nt.js:342:10)
at NunjucksView.render (J:\Node\chaat\node_modules\nunjucks\src\express-app.js:22:9)
at tryRender (J:\Node\chaat\node_modules\express\lib\applicatio n.js:640:10)

Хотя эта директория и файл присутствуют.

var express = require('express');
var app = express();
var nunjucks = require('nunjucks');

nunjucks.configure('./client', {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index.html', {date: new Date()});
});

app.listen(3000, '0.0.0.0', function() {
    console.log('Server started on port 3000');
});

vdekameron 19.06.2018 20:25

Спасибо, попробую завтра. А почему так? Ведь даже на оф. сайте nunjucks синтаксис именно такой
var app = express();

nunjucks.configure('views', {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index.html');
});

vdekameron 19.06.2018 20:48

Цитата:

Сообщение от Audaxviator (Сообщение 487745)
app.get('/', function(req, res) {
  var x = nunjucks.render('index.html', {date: new Date()});
  res.send(x);
});

Получаю точно такую ошибку -
Error: template not found: index.html
at createTemplate (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \environment.js:272:15)
at next (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \lib.js:282:7)
at handle (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \environment.js:311:11)
at H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \environment.js:321:9
at next (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \lib.js:280:7)
at Object.asyncIter (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \lib.js:286:3)
at Environment.getTemplate (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \environment.js:303:9)
at Environment.render (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\src \environment.js:342:10)
at Object.render (H:\WEB DEVELOPMENT\NODEJS\chaat\node_modules\nunjucks\ind ex.js:91:14)
at H:\WEB DEVELOPMENT\NODEJS\chaat\server\server.js:15:22

vdekameron 19.06.2018 21:19

Вот что там написано -
Using express? Simply pass your express app into configure:

var app = express();

nunjucks.configure('views', {
autoescape: true,
express: app
});

app.get('/', function(req, res) {
res.render('index.html');
});

vdekameron 19.06.2018 21:50

Короче я использую express и по идее все правильно делаю, вот только не понимаю почему файл не найден((((

vdekameron 20.06.2018 07:47

Цитата:

Сообщение от Audaxviator
Переводчик есть?

Да как бы не в совершенстве знаю но смысл понимаю. А дальше читали что написано там же?
Note that you can do this automatically with the simple API call configure by passing in the app as the express option. Returns env for further method chaining.
Что ты напишешь вот так -
var express = require('express');
var app = express();
var nunjucks = require('nunjucks');

var env = nunjucks.configure('./client', { autoescape: true });

env.express(app);
app.get('/', function(req, res) {
    res.render('index.html', {date: new Date()});
});


Что вот так -
var express = require('express');
var app = express();
var nunjucks = require('nunjucks');

nunjucks.configure('./client', {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index.html', {date: new Date()});
});


Разницы никакой.

vdekameron 20.06.2018 10:40

Цитата:

Сообщение от Audaxviator
Это элементарно, Ватсон.

Вот именно!)))

Все оказалось намного проще. Больше разговоров было)
var express = require('express');
var app = express();
var nunjucks = require('nunjucks');
var path = require('path');

var views = path.join(__dirname, '..', './client');

nunjucks.configure(views, {
    autoescape: true,
    express: app
});

app.get('/', function(req, res) {
    res.render('index.html', {date: new Date()});
});

app.listen(3000, '0.0.0.0', function() {
    console.log('Server started on port 3000');
});


Но большое спасибо что натолкнули на правильный ваниант.


Часовой пояс GMT +3, время: 03:03.