如何使用Node.js和zlib要求或评估gzip压缩的JavaScript文件?

威克

当我在Node中需要一个普通的JavaScript文件时,一切正常。

var test = require('test.js');
console.log(test.foo); // prints the function

但是现在我已经压缩了该test.js文件,将其作为string作品读取

var fs = require('fs');
var zlib = require('zlib');

var gunzip = zlib.createGunzip();

var buffer = [];
fs.createReadStream('test.js.gz').pipe(gunzip);
gunzip.on('data', function(data){
  buffer.push(data.toString())
});
gunzip.on('finish', function(){
  console.log(buffer.join("")); //prints the JS file as string    
}).on("error", function(e) {
  console.log(e);
});

但是,我不要string使用eval似乎不正确。

我怎样才能string将JavaScript评估为与我所需要的JavaScript('test.js')类似的JavaScript?(我不能使用外部库)

罗伯特克莱普

这是一个可能的实现:

const Module = require('module');
const zlib   = require('zlib');
const fs     = require('fs');

function requireGZ(filename) {
  let code = zlib.gunzipSync(fs.readFileSync(filename)).toString();
  let mod  = new Module();

  mod._compile(code, filename);

  return mod.exports;
}

// Use:
let test = requireGZ('./test.js.gz');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Zlib for gzip在ruby中压缩大文件

来自分类Dev

如何使用Node Webkit要求JS文件

来自分类Dev

如何使用gzip压缩,保留和清空原始文件

来自分类Dev

在发布到AWS S3之前,如何压缩/ gzip我缩小的.js和.css文件?

来自分类Dev

使用wiredtiger和zlib压缩将csv文件导入MongoDB

来自分类Dev

使用wiredtiger和zlib压缩将csv文件导入MongoDB

来自分类Dev

Node.js:指定要使用zlib + tar解压缩的文件

来自分类Dev

无法gzip在Node.js中压缩静态文件

来自分类Dev

gzip 压缩中的 Node.js 文件扩展名

来自分类Dev

使用zlib压缩多个文件

来自分类Dev

如何解压缩javascript中的gzip文件?

来自分类Dev

如何使用Node.js和Express编写多个文件

来自分类Dev

如何使用node.js和http下载文件?

来自分类Dev

使用IBM Cloud Function读取gzip压缩文件(.gz)时遇到的问题(操作:Node.js 12)

来自分类Dev

如何使用HTTPS使用Node.js下载文件?

来自分类Dev

使用node上传后如何删除文件?

来自分类Dev

如何配置Nginx和Node使用SSL?

来自分类Dev

我如何使用带有gzip压缩文件的ReadAllLines

来自分类Dev

如何使用gzip压缩将Heroku配置为托管文件

来自分类Dev

如何使用Node.js声明

来自分类Dev

如何使用Node.js标记降价?

来自分类Dev

如何使用Node JS发送多个响应

来自分类Dev

如何使用Node.js访问DOM?

来自分类Dev

如何使用Node.js观看URL?

来自分类Dev

如何使用Node.js抓取页面

来自分类Dev

Node.js-如何使用Sequelize事务

来自分类Dev

如何使用Node JS Express响应xml?

来自分类Dev

如何使用node.js导入目录?

来自分类Dev

如何使用node.js发送“ FIN”?