Импорт с нижнего уровня пакета узла - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть пакет узла (назовем его my-package), который в настоящее время выглядит следующим образом

src/
  index.js
  generators/
    generate-stuff.js

index.js выглядит следующим образом

module.exports={
      "some": {
          "json": "objects",
          ...
      },
      "other": {
          "json": "things",
          ...
      }
};

Теперь я могу очень легко импортировать этот файл в другие пакеты, выполнив следующие действия:

const myPackage = require('my-package');

И myPackage будет содержать содержимое этого JSON, которое вы видите выше

Однако то, что я действительно хочу импортировать это функция, существующая в generate-stuff.js (структура этого пакета наследуется, и я не могу легко ее изменить)

Этот файл выглядит следующим образом

module.exports = { functionIWantToExport(input1, input2){
        return {
            // do stuff with said inputs
        };
    }
}

Однако, когда я что-то делаю как

const functionIWant = require('my-package/generators/generate-stuff');

Я получаю следующую ошибку.

Cannot find module 'my-package/generators/generate-stuff'

Можно ли как-нибудь извлечь нужную мне функцию из этого пакета?

В моем node_modules я вижу, что module.exports находится в нужном мне файле

1 Ответ

0 голосов
/ 23 апреля 2020

Так удалось выяснить источник моей проблемы. И это имеет отношение к main в package.json

В моем package.json есть следующее

"main": "src/index.js"

Так вот почему просто выполнение require('my-package'); работает. Но если я хочу использовать относительный путь, он все еще находится над папкой sr c, так что мне действительно нужно это

const functionIWant = require('my-package/src/generators/generate-stuff');

Это решило мою проблему

...