No puedo importar Tone en mi proyecto Next.js. Tengo Tone como dependencia, pero cuando ejecuto import * as Tone from 'tone' Next dice que no puede encontrar el módulo node_modules/tone/build/esm/core/Global importado de node_modules/tone/build/esm/index.js . Originalmente pensé que era una cosa del navegador, donde tenía que asegurarme de que estaba importando Tone solo en el navegador y no en Node, pero importando dinámicamente (como se describe aquí ) en el gancho useEffect (que solo se ejecuta en el navegador), pero todavía no podía encontrar el módulo.
Lo extraño es que la consola del navegador imprime * Tone.js v14.8.38 * , por lo que claramente Tone existe , pero Next no puede encontrarlo por alguna razón.
Estoy ejecutando Next.js versión 12, Tone v14.8.38, React 18 e yarn v3.2.0, si eso importa. ¡Realmente agradecería cualquier ayuda!
Estás en el camino correcto con la carga dinámica, tengo un gran proyecto haciéndolo de esa manera. Así es como lo he hecho (aunque realmente no puedo ver lo que has hecho mal) -
const DynamicComponent = dynamic( () => import('../components/foobar'), { ssr: false } )Se pueden ver más detalles aquí (aunque veo que ya lo publicaste). https://nextjs.org/docs/advanced-features/dynamic-import
Dentro de su componente, puede importar objetos de tono de la siguiente manera, por ejemplo.
import { Clock, Merge, Oscillator, Player, Waveform } from "tone";He usado useEffect para instanciar clases de tonos, pero también lo he hecho usando clases JS. Ambas formas funcionaron para mí.
¿Es esto diferente de lo que hiciste? Solo para comprobar que está realizando la importación dinámica a nivel de página, ¿no? ¿Y cómo estás importando los objetos de tono? Esto depende de su código específico.
Estoy usando
"next": "^10.0.9", "react": "^17.0.1", "react-dom": "^17.0.1", "tone": "^14.7.77"Podría valer la pena bajar de categoría a estos e intentarlo.
actualmente no es posible ejecutar el tone en el nodo . Debe descargar tone.js desde aquí e incluirlo como un script en su proyecto.
también puedes intentar usar otra biblioteca como soundfont