Ошибка Uncaught Erry AR JS Использование Django для сайта на основе ARJavascript

Форум по Javascript
Anonymous
Ошибка Uncaught Erry AR JS Использование Django для сайта на основе AR

Сообщение Anonymous »

mindar «DrangeError: дополнительный байт (S), найденные в буфере [1]» + «Целевой элемент AR не найден»
Проблема
mindar throws drangeError: дополнительный xxxx byte (s), найденные в Buffer [1] при загрузке файла маркера .mind . Дополнительные журналы показывают целевой элемент AR, не найденные и предупреждение о предоставлении сообщений о сообщении браузера. /> [*] mindar-image-aframe
[*] Маркерный путь:/media/markers/baby121/baby121.mind

наблюдаемые журналы (триммированные)

Код: Выделить всё

Valid MIND format detected: 88919 byte payload
Received 88927 bytes, Content-Type: application/octet-stream
Uncaught (in promise) RangeError: Extra 4167 of 4168 byte(s) found at buffer[1]
AR target element not found
< /code>

 корневая причина < /h2>
Mindar проверяет длину маркера по своему заголовку. Слученный файл содержит  дополнительные байты [/b] по сравнению с заголовком (например, ожидается 88919, получен 88927). Обычно это происходит, когда:
[list]
[*] Edge/Proxy (Cloudflare/Tunnel и т. Д.) поврежден.AR target element not found
-это отдельная Dom Timing/Selector Проблема: отслеживание начинается до существует отслеживание перед .
Предупреждение о канале сообщений обычно происходит из разгибания Brrowser и не связано. /> a) Служить .mind < /code> файлы как необработанные, несжатые двоичные двойные

Код: Выделить всё

Content-Type: application/octet-stream
[*] no content-encoding (отключить gzip/brotli)
[*] Избегайте каких-либо преобразований ответов.
[/list]
nginx
location /media/markers/ {
types { application/octet-stream mind; }
default_type application/octet-stream;
gzip off; # ensure no compression
add_header Cache-Control "public, max-age=31536000, immutable";
}

apache

Код: Выделить всё

AddType application/octet-stream .mind
SetEnvIfNoCase Request_URI "\.mind$" no-gzip=1
Header set Cache-Control "public, max-age=31536000, immutable"
cloudflare/proxy
Добавить правило в cash-cache/transforms для *.mind или обеспечение соблюдения содержимого: идентификация при происхождении. Отключите Minify/Compression для этого пути.
b) Проверьте, что обслуживаемые байты соответствуют источнику
node Quick check

Код: Выделить всё

const fs = require('fs');
const https = require('https');
const crypto = require('crypto');

// local file
const a = fs.readFileSync('./baby121.mind');
console.log('local', a.length, crypto.createHash('sha256').update(a).digest('hex'));

// remote file
https.get('https://your-domain/media/markers/baby121/baby121.mind', res => {
const chunks = [];
res.on('data', d => chunks.push(d));
res.on('end', () => {
const b = Buffer.concat(chunks);
console.log('remote', b.length, crypto.createHash('sha256').update(b).digest('hex'));
});
});
Если длины/хэши отличаются, сервер/прокси изменяет файл. Исправить конфигурацию и/или повторную загрузку в Binary Mode.
c) Если вручную вынести, прочитайте как arraybuffer ()

Код: Выделить всё

const res = await fetch('/media/markers/baby121/baby121.mind', { cache: 'no-cache' });
const buf = await res.arrayBuffer();         // ✅ not res.text()
const blob = new Blob([buf], { type: 'application/octet-stream' });
const url  = URL.createObjectURL(blob);
// Use `url` in MindAR config
d) Убедитесь, что цель AR существует перед отслеживанием
html скелет JS Diming Guard

Код: Выделить всё

const sceneEl = document.querySelector('a-scene');
sceneEl.addEventListener('loaded', () => {
const target = document.querySelector('#ar-target');
if (!target) {
console.warn('AR target element not found');
// Optionally create/append the target here
}
});
e) Маркер повторного экспорта, если повторный
Если у In -disk .mind уже есть неправильный размер, регенерируйте его с помощью Mindar CLI/редактор и загрузите снова (двоичный режим). Избегайте редактирования его в текстовых редакторах. Я также подтвердил, что файл был правильно извлечен браузером, и что он возвращался с контентом-типом: приложение /октет-потоп. Файл .mind обнаруживается, но с несоответствующими размерами байтов (например, «полученные 88927 байтов» против «88919 полезной нагрузки»). Это приводит к DrangeError: дополнительные байты XXXX, найденные в буфере [1]. В то же время я также получаю целевой элемент AR. В результате опыт AR никогда не начинается должным образом.


Подробнее здесь: https://stackoverflow.com/questions/797 ... ed-website

Вернуться в «Javascript»