在主目录之外找不到模块
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 模块的路径发生变化,它就会中断。
我有以下目录结构:
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 模块的路径发生变化,它就会中断。