#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'
его из своего пакета.
Итак, подведем итог:
- Используйте узел 12 или более позднюю версию.
- Проверьте
"name"
в package.json. - Добавьте
"exports"
раздел в package.json, указывающий основную точку входа экспорта.
Комментарии:
1. Спасибо! Я собираюсь попробовать это!