«Модуль не найден» для абсолютного импорта в приватной упаковке - PullRequest
0 голосов
/ 24 апреля 2019

tl; dr:

Как мне импортировать / запрашивать по абсолютному пути в пакете nodejs, скомпилированном из Typescript?

Длинная версия:

Этот вопрос, вероятно, являетсяdup, но я очень долго искал:

У меня есть модуль машинописного текста, он настроен на компиляцию из src -> lib и имеет корневой путь:

tsconfig

"baseUrl": "src",
"outDir": "lib",

В моих исходных файлах я довольно успешно использую локальный импорт: где src / utils / immerReducer является локальным файлом

import { GetNamedReducer }  from 'utils/immerReducer';

разрешается правильно.В моем скомпилированном коде у меня есть

var immerReducer_1 = require("utils/immerReducer");

Для публикации я копирую package.json в папку lib.Затем он упаковывается в пакет и используется внутри (через «пряжу»).К сожалению, в потребляющем приложении я получаю:

Module not found: Error: Can't resolve 'utils/immerReducer'

Из того, что я могу сказать, инструкция require не ищет локальный пакет .

Я пыталсяразрешите это двумя различными способами:

1) Измените пути импорта на конкретные пути к файлам

var immerReducer_1 = require("/utils/immerReducer");

Это работает в скомпилированном коде, к сожалению, в оригинальном источнике:

import { GetNamedReducer }  from '/utils/immerReducer';

выдает ошибку

2) Вставить весь скомпилированный код в node_modules

Это просто ... слишком сильно.Для начала мне часто нужно ссылаться на конкретные файлы непосредственно в потребляющем проекте (из-за того, что я не могу понять, как экспортировать в пространства имен, и мне нужна некоторая организация в импортированном коде).

import { GetNamedReducer }  from '@company/package/node_modules/utils/immerReducer'; // <-- I refuse to do this

Я прочитал очень много вопросов с вариантами этой жалобы, и ответы, как правило, соответствуют варианту «не исправит».Но должен быть способ сделать это чисто.

...