Экспресс: сокращение CSS / JS из удаленного URL с помощью UglifyJS

#node.js #express

#node.js #экспресс

Вопрос:

Мне удалось получить данные в # 1, но я не могу распечатать их в Express # 2, как я могу разрешить данные и вывести их?

Я считаю, что это ошибка моего кода, из-за которой я не могу разместить правильную async / await.

Вот мой код:

minify.js

 const { getContent } = require('./get');
const { minifyJS } = require('./processing');

async function getMinify(req, res) {
  try {
    const remoteUrl = 'http://example.com/script.js';

    console.log('URL: '   remoteUrl);

    // #1
    const content = await getContent(remoteUrl);

    // #2
    const outputJS = await minifyJS(content);
    res.end(outputJS);

  } catch (error) {
    res.end(error.content);
  }
}

module.exports = { getMinify }
 

get.js

 const got = require('got');

async function getContent(remoteUrl) {
  const code = await got(remoteUrl);
  return code.body;
}

module.exports = { getContent }
 

processing.js

 const { minify } = require('uglify-js');

async function minifyJS(data) {
  const result = await minify(data);

  return result.code;
}

module.exports = { minifyJS }
 

app.js

 const express = require('express');
const { getMinify } = require('./minify');

const app = express();

app.get('/*', getMinify);

app.listen(5000);
 

Комментарии:

1. пожалуйста, добавьте script.js файл для тестирования кода, мне нужно

2. или дайте мне URL для тестирования

3. если ваша проблема решена, пожалуйста, примите и поддержите мой ответ, братан, спасибо

4. примите, если вы получили ответ, пожалуйста

Ответ №1:

на основе uglify-js результат minify(data) функции имеет два объекта code и error .

и minify(data) не нужно await

processing.js должно измениться

 const { minify } = require("uglify-js");
async function minifyJS(data) {
  let { error, code } = minify(data);
  if (error) 
    throw error;
    
  return code;
}
module.exports = { minifyJS };
 

и для обработки двух файлов .js (get.js и processing.js ) изменил
minify.js

   try {
    const remoteUrl = 'http://example.com/script.js';

    console.log('URL: '   remoteUrl);

    // #1
    const content = await getContent(remoteUrl);

    // #2
    const outputJS = await minifyJS(content);
    res.end(outputJS);

  } catch (error) {
    res.end(error); // remove .content
  }