Estoy tratando de usar una biblioteca llamada ToneJS en mi proyecto, de manera que podría escribir un botón que aplicaría un efecto de reverberación o aumentaría el tono de algún audio, por ejemplo.
en mi archivo HTML estoy importando el archivo JS que tendrá los scripts en una etiqueta
<html> ... <script src="tone.js"></script>y en el archivo tone.js solo tengo la línea de importación por ahora:
import * as Tone from "./node_modules/tone"; pero ahí está mi problema: dentro de la consola recibí el mensaje: Uncaught SyntaxError: Cannot use import statement outside a module
Intenté agregar el "tipo": "módulo" en el package.json del proyecto, pero no pasó nada. Luego cambié type="module" dentro de la etiqueta <script> dentro del archivo HTML, pero apareció otro error diferente:
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/html". Strict MIME type checking is enforced for module scripts per HTML spec.Bueno, aparentemente estaba tratando de importar scripts como en una aplicación nodeJS (usando import / require). En uno de los comentarios @sajjadrezaei dijo que usar CDN era una alternativa. Luego usé <script src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.5.44/Tone.js"></script> en mi index.html y luego pude usar cualquier de los archivos ToneJS
Si está utilizando módulos ES6, debe usar type="module" en su etiqueta <script> , por lo que debe usar su etiqueta de script como se muestra a continuación:
<script src="tone.js" type="module"></script>hay algún ejemplo aquí:
<!doctype html> <html> <script type="module"> import * as Tone from "./node_modules/tone"; //do something with Tone </script>También puede usar el CDN como un archivo js externo y usar Tone.js como se muestra a continuación:
<script src="https://cdnjs.cloudflare.com/ajax/libs/tone/14.8.38/Tone.js">Si su script es un módulo, debe hacer esto:
<script src="tone.js" type="module"></script>De lo contrario, el sistema pensará que es JavaScript normal y se producirá ese error.