gpt4 book ai didi

node.js - Webpack:读取本地 Node 模块的依赖项

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:24 24 4
gpt4 key购买 nike

我安装了两个依赖项,A 和 B。两者都使用另一个依赖项 C。但是 A 需要不同版本的 C,B 需要不同的版本。 NPM 通过将“C”依赖项安装到 B 的本地 node_modules 来处理它。

 Main path -> node_modules -> A, C with different version(parallel to A path),
B -> node_modules -> C with different version(inside node_modules of B dependency).

NPM 很好地处理了这个问题,但由于 webpack 配置而出现了问题。在我的例子中,两个依赖项都选择/读取外部依赖项,即与 A 和 B 并行,这适用于 A,但需要其本地 node_modules 内的依赖项。

我们编写绝对路径,webpack 将其转换为相对路径。我不确定是什么导致了这个问题。

最佳答案

所以在投入了一整天之后,我找到了解决方案。

原因:

基本上,问题是我通过将 node_modules 路径解析为我的应用程序目录路径来传递它们

const appDirectory = fs.realpathSync(process.cwd());
const resolveApp = relativePath => path.resolve(appDirectory, relativePath);

paths.appModules = resolveApp('node_modules');
paths.appSrc = resolveApp('src');

module.exports = {
....

modules: [paths.appModules, paths.appSrc].concat(
// It is guaranteed to exist because we tweak it in `env.js`
process.env.NODE_PATH.split(path.delimiter).filter(Boolean)
),
...
}

所以这里正常的 Node 解析机制在依赖冲突的情况下不起作用,并且在每种情况下都解析为外部模块。

解决方案:

将webpack解析的模块更改为以下代码

 module.exports = {
....

modules: ['node_modules', paths.appSrc].concat(
// It is guaranteed to exist because we tweak it in `env.js`
process.env.NODE_PATH.split(path.delimiter).filter(Boolean)
),
...
}

希望这会对某人有所帮助!!!!

关于node.js - Webpack:读取本地 Node 模块的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50971102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com