KOA 2 - скомпилировать SASS в CSS, используя node-sass-middleware - PullRequest
0 голосов
/ 15 ноября 2018

Я пытаюсь получить node-sass-middleware, используя koa2.Есть модуль koa-sass, который отлично работает, но использует генератор.

module.exports = function (options) {
  var mw = require('node-sass-middleware')(options);
  return function *(next) {
    yield mw.bind(mw, this.req, this.res);
    yield next;
  };
};

koa устарел Поддержка генераторов будет удалена в v3.См. Документацию для примеров того, как преобразовать старое промежуточное ПО https://github.com/koajs/koa/blob/master/docs/migration.md

, поэтому я хочу преобразовать его, используя async / await .

вот мой код:

module.exports = (options) => {
  const sass = require('node-sass-middleware')(options);;

  const middleware = async (ctx, next) => {
    await sass.bind(sass, ctx.req, ctx.res);
    await next();
  }
  return middleware;
};

Примечание не возвращает ошибку, но не компилируется.

app.js

app.use(sass({
  src: path.join(__dirname + '/scss'),
  dest: path.join(__dirname + '/public/stylesheets'),
  outputStyle: 'compressed',
  indentedSyntax: false
}))

app.use(require('koa-static')(__dirname, 'public'))

Структура папок

public
|--scss
|  |--style.scss
|--public
|  |--stylesheets
|  |  |--style.css
app.js

1 Ответ

0 голосов
/ 15 ноября 2018

Я считаю, что обертка должна быть такой:

module.exports = function (options) {
    const sass = require('node-sass-middleware')(options);
    return (ctx, next) => {
        return new Promise((resolve, reject) => {
            sass.call(sass, ctx.req, ctx.res, (err) => {
                if (err) {
                    reject(err);
                } else {
                    resolve(next());
                }
           });
       });
    };
};

Также вы можете посмотреть на https://github.com/vkurchatkin/koa-connect

...