Как этот проект nodejs ссылается на папку общей библиотеки? - PullRequest
0 голосов
/ 21 октября 2018

Я смотрю на этот проект, и у них есть несколько узловых проектов, таких как:

api
project2
project3

shared

Таким образом, различные проекты ссылаются на общую папку, например:

if (process.env.NODE_ENV === 'development') {
  const logging = require('shared/middlewares/logging');
  middlewares.use(logging);
}

https://github.com/withspectrum/spectrum/blob/alpha/api/routes/middlewares/index.js#L6

И файл logging.js находится в общей папке:

// @flow
// Log requests with debug
const debug = require('debug')('shared:middlewares:logging');

module.exports = (
  req: express$Request,
  res: express$Response,
  next: express$NextFunction
) => {
  debug(`requesting ${req.url}`);
  next();

Поэтому я попытался сделать что-то похожее в моем проекте node / express, но я получаю эту ошибку:

Эта зависимость не найдена:

* shared/middlewares/logging in ./src/middlewares/index.js

To install it, you can run: npm install --save shared/middlewares/logging

Есть ли что-то, что они сделали в своем проекте, чтобы это сработало?

1 Ответ

0 голосов
/ 21 октября 2018

Естественно, вы должны указать относительный путь для «require ()», если вы используете свои собственные модули, например,

require('./path/to/custom/module/file')

// In this case smth like
require('../../../shared/middlewares/logging')

Если вы не используете относительный путь, он будет искать установленный пакет, и этопочему вы получили сообщение об ошибке с предложением установить, потому что он не найден.

Существует несколько способов сообщить узлу о поиске пакета в пользовательском каталоге.Вы можете проверить эту ссылку для примеров.В проекте «спектр» это настраивается путем установки NODE_PATH переменной среды, вы можете видеть ее здесь и здесь

В этих строках вы можетесмотрите NODE_PATH=./, который указывает узлу искать пакеты в корневом каталоге.

Вот и все, надеюсь, теперь все ясно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...