Pako js膨胀后返回无效结果

时间:2019-03-21 16:39:05

标签: javascript compression pako

我正在尝试在服务器上压缩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>

如果我放低此代码,客户端上将出现错误:“未捕获的无效距离代码”:

alert(1);

但是,如果我想缩小这个压力:

!(function() {

    alert(1);

})()

它正常工作。 此外,如果我尝试缩小这个压力:

!(function() {

    alert(1);

})()
alert(2);

Chrome给我抛出一个错误:“未捕获的SyntaxError:意外的标识符”,因为pako提供了无效的代码。 那么,也许字符集有问题,有什么想法吗? Pako版本:1.0.10

0 个答案:

没有答案