Проблема
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Предупреждение о канале сообщений обычно происходит из разгибания Brrowser и не связано. /> a) Служить .mind < /code> файлы как необработанные, несжатые двоичные двойные
Код: Выделить всё
Content-Type: application/octet-stream[*] Избегайте каких-либо преобразований ответов.
[/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"
Добавить правило в 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'));
});
});
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
html скелет
Код: Выделить всё
Код: Выделить всё
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
}
});
Если у In -disk .mind уже есть неправильный размер, регенерируйте его с помощью Mindar CLI/редактор и загрузите снова (двоичный режим). Избегайте редактирования его в текстовых редакторах. Я также подтвердил, что файл был правильно извлечен браузером, и что он возвращался с контентом-типом: приложение /октет-потоп. Файл .mind обнаруживается, но с несоответствующими размерами байтов (например, «полученные 88927 байтов» против «88919 полезной нагрузки»). Это приводит к DrangeError: дополнительные байты XXXX, найденные в буфере [1]. В то же время я также получаю целевой элемент AR. В результате опыт AR никогда не начинается должным образом.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ed-website
Мобильная версия