Установите и получите доступ к локальной папке как модуль npm - PullRequest
0 голосов
/ 03 мая 2018

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

= (main-folder)
 - package.json
 - ...
 = server
  - index.js
  - ...
 = deploy-abc // new server
  = src
   - index.js
 = src
  - index.js
  - ...

Я пытаюсь установить deploy-abc как модуль в приложении основной папки. Итак, я побежал: yarn add "/var/www/main-folder/deploy-abc". Он установлен правильно, и я вижу зависимость 'deploy-abc', указанную в package.json.

Однако, когда я пытаюсь получить доступ к экспортированному объекту deploy-abc, я получаю ошибку узла Error: Cannot find module 'deploy-abc'. Е.г .: В каком-то файле в главной папке:

const deployAbc = require("deploy-abc");
console.log(deployAbc); // error

Куда я иду не так?

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Возможно, вам придется использовать точный относительный путь. Например, const deployAbc = require("../deploy-abc")

0 голосов
/ 03 мая 2018

Согласно узлу документов: https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders

Если идентификатор модуля, переданный для require (), не является основным модулем и не начинается с '/', '../' или './', тогда Node.js начинается с родительского каталога текущий модуль, добавляет / node_modules и пытается загрузить модуль из этого места.

Итак, если ваш модуль сейчас находится в главной папке, то, как он вам понадобится, будет зависеть от относительного местоположения. Если вам требуется, скажем, /src/index.js, то вам потребуется:

const deployAbc = require('../deploy-abc')

В этом случае вам также не нужно указывать фактический файл, поскольку по умолчанию он равен index.js. Однако если в файле ввода указано «dabc.js» или что-то еще, вам также необходимо указать это в расположении.

...