这个nodejs项目如何引用共享库文件夹?

时间:2018-10-21 15:54:50

标签: node.js express

我正在看这个项目,他们有多个节点项目,例如:

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 :(得分:1)

自然地,如果您使用自己的模块,则必须显示“ require()”的相对路径,例如

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

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

如果您不使用相对路径,它将搜索已安装的软件包,这就是为什么您会因未找到安装建议而出现错误的原因。

有几种方法可以告诉节点在自定义目录中搜索软件包。您可以查看this link中的示例。在“频谱”项目中,它是通过设置 NODE_PATH 环境变量进行配置的,您可以看到它herehere

在这些行上,您可以看到NODE_PATH=./,它告诉节点在根目录中查找软件包。

就是这样,希望现在已经很清楚了:)