импорт npm из того же index.js что текущий файл экспортируется из

#javascript #node.js #npm #importerror

#javascript #node.js #npm #ошибка импорта

Вопрос:

Предположим, я создал модуль npm с именем @myscope/blurfl , который содержит пару классов: A, определенный в A.js и B , определенный в B.js , которые оба повторно экспортируются через blurfl/index.js :

 @myscope/
    blurfl/
        A.js
        B.js
        index.js
 

A.js:

 export class A {...}
 

B.js:

 import { A } from './A.js';
export class B {...}
 

index.js:

 export * from "./A.js";
export * from "./B.js";
 

Я бы предпочел использовать import { A } from '@myscope/blurfl' вместо import {A} from './A.js' того, чтобы поддерживать чистоту кода (и упрощать перемещение экспорта в другой файл), но @myscope/blurfl , очевидно, сам по себе не является зависимостью @myscope/blurfl , поэтому распознаватель модуля узла не может его найти, если я запускаю node index.js проверку отсутствующих зависимостей.

Есть ли какой-либо способ импортировать другой элемент, совместно экспортируемый из того же index.js файл без использования явного имени файла элемента?

Ответ №1:

Я предполагаю, что вы используете текущую версию Node.js (12 LTS или более поздняя версия). Убедитесь, что "name" ваш пакет в package.json действительно "@myscope/blurfl" (и не только "blurfl" ). Теперь добавьте "exports" раздел в package.json, указывающий относительный путь к основному экспорту, т.е.

 "exports": {
    ".": "./index.js"
}
 

Теперь вы также сможете использовать import { A } from '@myscope/blurfl' его из своего пакета.

Итак, подведем итог:

Комментарии:

1. Спасибо! Я собираюсь попробовать это!