Supongamos que he creado un módulo npm llamado @myscope/blurfl que contiene un par de clases: A, definida en A.js y B definida en B.js , ambas reexportadas a través de blurfl/index.js :
@myscope/ blurfl/ A.js B.js index.jsA.js:
export class A {...}B.js:
import { A } from './A.js'; export class B {...}índice.js:
export * from "./A.js"; export * from "./B.js"; Preferiría usar import { A } from '@myscope/blurfl' en lugar de import {A} from './A.js' para mantener el código limpio (y hacer que sea más fácil mover una exportación a un archivo diferente), pero @myscope/blurfl obviamente no es una dependencia de @myscope/blurfl en sí mismo, por lo que el módulo de resolución del nodo no puede encontrarlo si ejecuto node index.js para verificar si faltan dependencias.
¿Hay alguna forma de importar otro elemento coexportado desde el mismo archivo index.js sin usar el nombre de archivo explícito del elemento?
Supongo que está utilizando una versión actual de Node.js (12 LTS o posterior). Asegúrese de que el "name" de su paquete en package.json sea realmente "@myscope/blurfl" (y no solo "blurfl" ). Ahora, agregue una sección de "exports" al paquete.json especificando la ruta relativa de la exportación principal, es decir
"exports": { ".": "./index.js" } Ahora también debería poder usar import { A } from '@myscope/blurfl' desde su paquete.
Entonces, para resumir:
"name" en package.json."exports" a package.json que indique la exportación del punto de entrada principal .