Node.js 此nodejs项目如何引用共享库文件夹?
我正在看这个项目,他们有多个节点项目,如:Node.js 此nodejs项目如何引用共享库文件夹?,node.js,express,Node.js,Express,我正在看这个项目,他们有多个节点项目,如: api project2 project3 shared 因此,各种项目引用共享文件夹,如: if (process.env.NODE_ENV === 'development') { const logging = require('shared/middlewares/logging'); middlewares.use(logging); } 并且logging.js文件位于共享文件夹中: // @flow // Log reque
api
project2
project3
shared
因此,各种项目引用共享文件夹,如:
if (process.env.NODE_ENV === 'development') {
const logging = require('shared/middlewares/logging');
middlewares.use(logging);
}
并且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
他们在项目中是否做了一些事情来实现这一点?当然,如果您使用自己的模块,您必须显示所需的相对路径,例如
require('./path/to/custom/module/file')
// In this case smth like
require('../../../shared/middlewares/logging')
如果您不使用相对路径,它将搜索已安装的包,这就是为什么您在建议安装时出错的原因,因为找不到它
有几种方法可以告诉节点在自定义目录中搜索包。您可以查看示例。在spectrum项目中,它是通过设置NODE_PATH环境变量来配置的,您可以看到它并
在这些行中,您可以看到NODE_PATH=./,它告诉NODE在根目录中查找包
就是这样,希望现在一切都清楚了:您的项目根目录中是否有logging.js文件的/middleware目录?@RashadIbrahimov是的。实际上,您必须显示相对路径,如require'/path/to/shared/middleware/logging',特别是smth,如require'/shared/middleware/logging'。如果您不使用相对路径,它会尝试在已安装的软件包中搜索,这就是为什么它建议您安装它,因为找不到它。在spectrum项目中,它可能以某种方式配置为查找根目录中的包,可能是某个地方的Web包配置,需要检查。@RashadIbrahimov他们使用backpad,覆盖在这里可能在这里?我没看见!他们使用了NODE_PATH env变量,请检查下面我的答案,这应该有助于您理解。