Загрузка модулей узлов из виртуальной файловой системы
Я пытаюсь загрузить некоторые модули узлов из виртуальной файловой системы, но не могу заставить ее работать
var request = require('request')
, AdmZip = require('adm-zip')
, fs = require('fs')
, unionfs = require('unionfs')
, memfs = require('memfs')
, mem = new memfs.Volume
, data = []
unionfs.use(fs).use(mem)
unionfs.replace(fs)
var req = request({
method: 'GET',
uri: 'https://firebasestorage.googleapis.com/v0/b/****.appspot.com/o/node_modules.zip',
headers: {
"encoding": "binary"
}
})
req.on('data', function(chunk) {
data.push(chunk)
}).on('end', function() {
var binary = Buffer.concat(data)
mem.mountSync('./', {
"node_modules.zip": binary
})
var zip = new AdmZip("./node_modules.zip")
var files = {}
zip.getEntries().forEach(function(entry) {
if (entry.isDirectory)
console.log(entry.entryName)
files[entry.entryName] = entry.getData()
});
mem.mountSync('./node_modules', files)
//need to get these modules dynamically
var async = require("async")
})
Я получаю ошибку: Ошибка: не удается найти модуль 'async'
сейчас я пытался использовать этот модуль https://www.npmjs.com/package/app-module-path чтобы добавить мой виртуальный путь, но он получает только физические пути.
Кто-нибудь может мне помочь с этими просьбами?
Не беспокойтесь о безопасности, я собираюсь использовать шифрование с этим.
1 ответ
Решение
Автор unionfs пишет, что require
не работает в новых версиях node.js
:
// NOTE: This does not work in new Node.js
// Now you can also do:
// require('/usr/mem/dir/hello.js');
// Hello world!
// require('/project/hello.js');
// Hello world!
https://github.com/streamich/unionfs/blob/master/examples/example.js#L41