Тема: Snakeskin
Показать сообщение отдельно
  #281 (permalink)  
Старый 15.10.2014, 17:14
Аватар для Safort
Профессор
Отправить личное сообщение для Safort Посмотреть профиль Найти все сообщения от Safort
 
Регистрация: 23.12.2013
Сообщений: 1,856

kobezzza,
у меня тут небольшая проблема, не подскажешь, что за магия творится?)
Решил я использовать уже компилированные SS-файлы в Ноде(вместо живой компиляции).
Итак, действующие лица:
gulpfile.js
/app/views/index.ss
/app/views/index.ss.js
app.js


Сожержимое gulpfile.js:

//...
    gulp.task('views', function() {
      gulp.src([ 'путь_к_исходнику/' + 'index.ss'])
          .pipe(concat('index.ss'))  //на будущее, когда будет много файлов
          .pipe(gulp.dest('app/views'))
          .pipe(snakeskin({ prettyPrint: true }))
          .pipe(gulp.dest('app/views'));
    });
    // ...



Содержимое index.ss (упростил для примера):

{template text(a)}
      {a}
    {end}




Сожержимое app.js:

var tpls = require(__dirname+'/app/views/index.ss.js').init(require('snakeskin'));
console.log(tpls.text('ss.js'));


Запускаю скрипт, а консоль меня посылает
C:\dev\test>node app.js

C:\dev\test\app\views\index.ss.js:7
    var $C = this.$C != null ? this.$C : Snakeskin.Vars.$C,
                                         ^
ReferenceError: Snakeskin is not defined
    at Object.<anonymous> (C:\dev\test\app\views\index.ss.js:7:42
)
    at Object.<anonymous> (C:\dev\test\app\views\index.ss.js:164:
4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\dev\test\app.js:18:12)
    at Module._compile (module.js:456:26)



Но это ещё не всё. В app.js пишу следующее:

var snakeskin = require('snakeskin');
    var tpls = snakeskin.compileFile(__dirname+'/app/views/index.ss');
    console.log(tpls.text('ss'));


Запускаю файл - работает. Но и это ещё не всё, снова пишу:

var tpls = require(__dirname+'/app/views/index.ss.js').init(require('snakeskin'));
    console.log(tpls.text('ss.js'));

Запускаю. И это теперь тоже работает.

Казалось бы, коммунизм наступил всё норм, но нет.
Редачу файл index.ss (или просто жму Ctrl+S в Sublime), Gulp подхватывает изменения, запускаю app.js и снова вылетает ошибка.
И такой баг(?) повторяется только при использовании уже компилированного шаблона, при живой компиляции такой проблемы нет.

Не знаю в чём именно проблема, но раз ошибку выдаёт SS, то решил написать сюда.
Ответить с цитированием