1 Востаннє редагувалося sensei (16.11.2017 23:52:48)

Тема: node.js dataview

Всім привіт!

Є у мене один бібліотечний файл https://github.com/mrdoob/three.js/blob … LLoader.js
Який на клієнті працює без жодних проблем

А от коли пробую виконати його у node.js, то видає помилку

Це стається в момент коли він стикається з бінарним стл файлом (з ascii проблем немає)
В моменті коли використовуєтсья DataView, а саме DataView.getFloat32 (в коді це рядок 168)

Текст самої помилки:

RangeError: Offset is outside the bounds of the DataView

Як я викликаю цей скріпт:

require( './dependencies/three/STLLoader.js' );
var loader = new THREE.STLLoader();
geometry = loader.parse( text );

Не підкажите що я роблю не так?

2

Re: node.js dataview

На клієнті DataView.byteLength = 707684
На сервері DataView.byteLength = 684328
думаю тут щось не так..

3

Re: node.js dataview

Проблема мабуть пов'язана з тим як зчитується файл
Оскільки приходять буфери різного розміру для парсання

На фронтенді використовується FileLoader, який використовує XMLHttpRequest
А на бекенді я читаю файл

var fs = require( 'fs' );
var file = './public/' + fileName;
var text = fs.readFileSync( file, 'utf8' );

І вже на парсання приходить різна кількість байтів

Можливо проблема з 'utf8'

4 Востаннє редагувалося sensei (17.11.2017 01:13:15)

Re: node.js dataview

Так, проблема була в кодуванні при читанні файлу.
Просто цей STLLoader заточений і під бінарні і під аскі формати, і виходить фронтенд версія з FileLoaderom сама розгрібала в якому кодуванні його прочитати

Прихований текст
получився наглядний приклад https://uk.wikipedia.org/wiki/%D0%9C%D0 … 1%82%D0%B8