在主目录之外找不到模块

Module not found outside of main directory

我有以下目录结构:

src/
    app/
        package.json
        node_modules/
        app.js
    tools/
       tool_A.js

tool_A.js需要快递

app.js 需要 tool_A

我在app/package.json的要求中定义了快递包,并且正确安装在node_modules文件夹中。

问题是如果我 运行 app/app.js 我仍然得到错误:

Error: Cannot find module 'express'

有没有办法让它从根应用程序而不是外部目录开始搜索模块?

你可以把package.json移动到根目录下,在app.js里面使用require("../tools/toolA.js")

或者您在 tools 中创建一个新包并为该包安装 express:

.../src/tools> npm init
[...]
.../src/tools> npm i express

根据您的描述,第一种解决方案似乎更适合您的情况,但理论上两者都可行。

编辑理论上,虽然它一点也不干净,但您也可以使用 require("../app/node_modules/express"),但是一旦 express 模块的路径发生变化,它就会中断。