我有Node.js项目和以下文件夹结构:
我在awesome-parser
脚本中使用awesome-formatter.js
模块和prettify.js
库,如下所示:
require('awesome-parser')
require('../lib/awesome-formatter.js')
awesome-formatter.js
反过来也应该使用awesome-parser
:
require('awesome-parser')
我的FrontEndApp
已配置为使用Webpack,并且我正在尝试使用npm run dev
命令在开发模式下运行它。但是,出现以下错误:
ERROR编译失败,出现1个错误
未找到这些依赖项:
/home/user/dev/lib/awesome-formatter.js中的*令人敬畏的解析器
我不想在awesome-formatter.js
内移动FrontEndApp
,因为我也在BackEndApp
项目(可能还有其他一些项目)中使用了它,并且我不想创建在“ lib”中分开“ node_modules”,只是为了不复制磁盘上已安装的模块。
所以,我的问题是,如何使Webpack在位于项目文件夹外部的js脚本中使用项目的“ node_modules”?
P.S。当然,有一些变通办法,例如符号链接或从lib/awesome-fromatter
制作功能齐全的模块(带有package.json等)并将其安装到FrontEndApp/node_modules
中,但是有直接的方法来解决此问题吗? / p>
答案 0 :(得分:0)
我找到了一个解决方案:resolve.modules
已添加到Webpack配置文件中。
module.exports = {
...
resolve: {
...
modules: [
'node_modules',
resolve('node_modules')
]
},
...
}
这意味着Webpack在“ node_modules”中搜索模块作为相对子文件夹(这是通常的行为),并且也在项目的“ node_modules”的绝对路径中搜索:resolve('node_modules')
,因此脚本项目外部的文件夹(例如我结构中的lib
)可以找到并使用它。