Estoy haciendo un proyecto usando ThreeJS y tratando de importar una función js que agrega un efecto ASCII al renderizador, pero no importa cómo lo haga, parece que obtengo errores. Probé varias sintaxis y cambié la configuración de TS, pero no tuve suerte.
Editar: me acabo de dar cuenta de que debería aclarar, descargué la función AsciiEffect como un archivo js del repositorio de github directamente, así que estoy tratando de importar una sola función del archivo que descargué "AsciiEffect.js" a mi archivo TS principal "main.ts ". No estoy importando desde la dependencia ThreeJS, ya que aparentemente no es parte del paquete en sí.
Archivo de configuración de TS
{ "compilerOptions": { "target": "ESNext", "useDefineForClassFields": true, "module": "commonJS", "lib": ["ESNext", "DOM"], "moduleResolution": "Node", "strict": true, "sourceMap": true, "isolatedModules": true, "esModuleInterop": true, "noEmit": true, "noUnusedLocals": true, "noUnusedParameters": true, "noImplicitReturns": true, "skipLibCheck": true, "allowJs": true }, "include": ["src"] }actualmente estoy tratando de importar así
import './style.css' import * as THREE from 'three'; import {AsciiEffect} from './effects/AsciiEffect.js'y exportando desde AsciiEffect.js así
export {AsciiEffect}lo que me da este error en el navegador Uncaught SyntaxError: Export 'AsciiEffect' no está definido en el módulo
Intenté usar otras sintaxis pero no tuve suerte, este es mi primer proyecto que intenta usar mecanografiado y en realidad esperaba que el efecto estuviera dentro de la dependencia de ThreeJS. Intenté rehacer lo que tengo hasta ahora en JS pero obtengo el mismo error. El proyecto fue creado usando Vite si eso ayuda. Es solo un proyecto TS predeterminado sin marco.
Tiene una mala exportación, exporte la función de esta manera: export AsciiEffect Luego, el compilador de TS se quejará de que no reconoce ese módulo, ya que es un módulo .js y no uno de TS, por lo que debe agregar una declaración de módulo personalizada:
*.d.ts en la raíz de su proyecto, cree un archivo llamado declarations.d.ts .declare module "path/to/the/module";De esta manera, le está diciendo a TS que ese es un módulo legítimo para importar.