#reactjs #node-modules
Вопрос:
vmsg требует URL-ссылки на .wasm
файл, который требуется для работы. Их пример кода (который действительно работает) выглядит следующим образом:
import React, { Component } from 'react';
import vmsg from 'vmsg';
const test = new vmsg.Recorder({wasmURL: "https://unpkg.com/vmsg@0.3.0/vmsg.wasm"});
Но я хотел бы, чтобы этот файл ссылался на каталог в моем приложении, а не на этот внешний URL-адрес, и я не уверен:
- Где я должен разместить этот файл (
assets
/public
/node_modules
папку)? - Что бы я сделал, чтобы это сработало (делаю ли я импорт или как-то ссылаюсь на него напрямую)?
Я попытался поместить файл в папку «Ресурсы» и изменить строку кода на многие вещи в соответствии с:
const test = new vmsg.Recorder({wasmURL: '../../assets/vmsg.wasm'});
Но, похоже, ничего не работает, что после некоторого чтения имеет смысл. Но я все еще не уверен, каким должен быть правильный способ добавления такого файла.
Комментарии:
1. Это приложение, созданное CRA (см., например, create-react-app.dev/docs/использование общей папки ), или что-то другое? Вы используете Webpack (тогда загрузчик файлов должен быть настроен для импорта, чтобы указать вам путь)?
2. @jonrsharpe, я использую CRA с Craco. Итак, означает ли это, что я должен поместить его в общую папку и использовать что-то вроде
process.env.PUBLIC_URL
? Было бы это правильно?3. Насколько я понимаю, Craco используется для изменения конфигурации по умолчанию, поэтому, повлияют ли эти изменения на эту функциональность, мы не можем вам сказать, но я был бы склонен попробовать это на вашем месте.
4. Спасибо, @jonrsharpe, я пытаюсь использовать
process.env.PUBLIC_URL
, но получаю еще одну ошибку. Хотя, похоже, он действительно видитwasm
файл. За надежду, что я на правильном пути. Спасибо.
Ответ №1:
Я видел, как некоторые люди сталкивались с чем-то подобным специально при попытке импортировать фотоактивы. Одно из решений, которое я нашел подходящим для этого, — включить .default в конце.
const test = new vsmg.Recorder({wasmURL: require('../../assets/vmsg.wasm').default});
Комментарии:
1. Это, кажется, работает (как и идея @jonsharpe добавить его в мою общую папку) — Теперь у меня проблема с загрузкой
.wasm
файла на моем локальном сервере, но, по крайней мере, это теперь работает. Спасибо!