# Draco compression and node JS?

**URL:** <https://discourse.threejs.org/t/draco-compression-and-node-js/10458>\
**Category:** Questions\
**Tags:** loaders, geometry\
**Created:** [October 25, 2019, 10:01pm UTC](https://discourse.threejs.org/t/draco-compression-and-node-js/10458 "2019-10-25T22:01:18Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Skylar\_Thomas](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/skylar_thomas/32/7191_2.png) [@Skylar\_Thomas](https://discourse.threejs.org/u/Skylar_Thomas)\
**Post date:** [October 25, 2019, 10:01pm UTC](https://discourse.threejs.org/t/draco-compression-and-node-js/10458/1 "2019-10-25T22:01:18Z")

</div>

Alright I have tried [https://www.npmjs.com/package/draco3dgltf](https://www.npmjs.com/package/draco3dgltf) and poured over [[Solved] GLTFLoader DRACOLoader in nodejs](https://discourse.threejs.org/t/solved-gltfloader-dracoloader-in-nodejs/5980/3) from some while back.

I tried following the above question verbatim but ran into a “cant find ‘fs’ error” that sent me down another rabbit hole. I’m just trying to use draco compression with GLTF loader, in node.

I have the GLTF loader working well with

```
var loader = new THREE.GLTFLoader();
// const decoder = require('draco3dgltf').createDecoderModule();

// loader.setDRACOLoader(decoder);

//https://blackthread.io/gltf-converter/
loader.load(
  // resource URL
  string,
  // called when the resource is loaded
  function ( gltf ) {

```

But the commented out parts w draco obviously dont work. What was the consensus with using draco compression in node js?

---

<div class="post-metadata">

**Author:** ![Alejandro\_Insua](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/alejandro_insua/32/3958_2.png) [@Alejandro\_Insua](https://discourse.threejs.org/u/Alejandro_Insua)\
**Post date:** [November 12, 2019, 5:29am UTC](https://discourse.threejs.org/t/draco-compression-and-node-js/10458/2 "2019-11-12T05:29:10Z")

</div>

Hi.

I guess you want to open a GLB Draco compressed file under nodejs, isn’t it?

Here one one example to load a list of GLB files:

```
// ---------------------------------------------------------------------------------------------------------
// - REQUIREMENTS:
// ---------------------------------------------------------------------------------------------------------
	var start = Date.now();
	var before = Date.now();
	var fs = require("fs")
	require('jsdom-global')()
	global.DOMParser = window.DOMParser
	var DOMParser = window.DOMParser
	global.THREE = require('three')
	require('./node_modules/three/examples/js/loaders/DRACOLoader.js')
	require('./node_modules/three/examples/js/loaders/GLTFLoader.js')

// ---------------------------------------------------------------------------------------------------------
// - ARGUMENTS::
// ---------------------------------------------------------------------------------------------------------
	var listFile = process.argv[2]; // Plain text with filenames separated by lines (each line one filename)
	var inFolder = process.argv[3]; // Input folder where glb files are allocated
	before = Date.now();

// ---------------------------------------------------------------------------------------------------------
// - FUNCTIONS:
// ---------------------------------------------------------------------------------------------------------
function toArrayBuffer(buf) {
	var ab = new ArrayBuffer(buf.length);
	var view = new Uint8Array(ab);
	for (var i = 0; i < buf.length; ++i) {
		view[i] = buf[i];
	}
	return ab;
}

// ---------------------------------------------------------------------------------------------------------
// - GLOBAL VARIABLES::
// ---------------------------------------------------------------------------------------------------------
var fileArray = fs.readFileSync(listFile, 'utf8').toString().split("\n");
console.log(fileArray);
var glbLoader = new THREE.GLTFLoader();
glbLoader.setDRACOLoader( new THREE.DRACOLoader() );

for (var i=0; i<fileArray.length-1;i++) {
	var inFilename = inFolder + fileArray[i];
	console.log("opening file " + inFilename);
	if (fs.existsSync(inFilename)) {
		console.log("loading glb " + inFilename);
		var data = fs.readFileSync(inFilename);
		var arrayBuffer = toArrayBuffer(data);
		console.log(arrayBuffer);
		glbLoader.parse( arrayBuffer, '', function ( glb ) {
			console.log(glb.scene);
		}, function (event){
			console.log(event);
			console.log("loader failed");
		} );
	} else {
		console.log("File doesn't exist " + inFilename);
	}
}

```

Best regards
