Pako JS возвращает неверный результат после инфляции - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь сжать файл js на сервере, затем распаковать и запустить его на клиенте. Код на моем сервере:

const deflateString = pako.deflate(codeText, { to: 'string' });
const indexTemplate = fs.readFileSync('./index.ejs', 'utf-8');
const deflateString = pako.deflate(codeText, { to: 'string' });
fs.writeFileSync(`${__dirname}/index.html`, ejs.render(indexTemplate, {bundle: deflateString}));

Шаблон ejs:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <script src="./pako_inflate.js"></script>
    <script id="deflateString" type="text/plain"><%- bundle %></script>
    <script>
        var deflatedBundle = document.querySelector('script#deflateString').innerHTML;
        var inflatedBundle = pako.inflate(deflatedBundle, { to: 'string' });    
        var s = document.createElement('script');
        s.innerText = inflatedBundle;
        document.body.appendChild(s);
    </script>
</body>
</html>

Ошибка на клиенте появляется: «Uncaught недопустимый код расстояния», если я дефлировать этот код:

alert(1);

Но если я попытаюсь спустить это:

!(function() {

    alert(1);

})()

Работает правильно. Более того, если я пытаюсь спустить это:

!(function() {

    alert(1);

})()
alert(2);

Chrome выдает мне ошибку: «Uncaught SyntaxError: Неожиданный идентификатор», потому что pako выдает неверный код. Так что, может быть, проблема с кодировкой, есть идеи? Пако версия: 1.0.10

...