我正在看这个项目,他们有多个节点项目,例如:
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
他们是否在项目中做了某些工作,以使其能够正常工作?
答案 0 :(得分:1)
自然地,如果您使用自己的模块,则必须显示“ require()”的相对路径,例如
require('./path/to/custom/module/file')
// In this case smth like
require('../../../shared/middlewares/logging')
如果您不使用相对路径,它将搜索已安装的软件包,这就是为什么您会因未找到安装建议而出现错误的原因。
有几种方法可以告诉节点在自定义目录中搜索软件包。您可以查看this link中的示例。在“频谱”项目中,它是通过设置 NODE_PATH 环境变量进行配置的,您可以看到它here和here
在这些行上,您可以看到NODE_PATH=./
,它告诉节点在根目录中查找软件包。
就是这样,希望现在已经很清楚了:)