gpt4 book ai didi

web - 如何将 webpack 指向特定的 node_modules 文件夹

转载 作者:行者123 更新时间:2023-12-03 15:56:09 25 4
gpt4 key购买 nike

我正在尝试构建 grpc web客户端,我需要打包代码来解决require陈述。

我已经编译了protosjs如果我将它们放在我安装了 node modules 的当前文件夹中,它就可以工作.

问题是如果我有 compiled proto在其他地方,我需要它们,webpack寻找 node modules在那条路上。

来自我的client.js
工作版本:

const {StopRequest, StopReply} = require('./work_pb.js');

有问题的版本:
const {StopRequest, StopReply} = require('../../../messages/proto/output/work_pb.js');

在最后一种情况下,它会查找 node modules../../../messages/proto/output/ . node modules安装在我的 client.js 所在的当前路径中是和从哪里跑的 npx webpack client.js .
ERROR in /home/xxx/yyy/zzz/messages/proto/output/work_pb.js
Module not found: Error: Can't resolve 'google-protobuf' in '/home/xxx/yyy/zzz/messages/proto/output'
@ /home/xxx/yyy/zzz/messages/proto/output/work_pb.js 11:11-37
@ ./client.js


我怎么知道 webpack在当前路径中查找节点模块而不是在已编译原型(prototype)的路径中?

最佳答案

您可以指定 resolve.modules 自定义目录,Webpack 在该目录中搜索具有绝对导入路径的模块:

// inside webpack.config.js
const path = require('path');
module.exports = {
//...
resolve: {
modules: [path.resolve(__dirname, 'node_modules'), 'node_modules']
}
};
这将使 node_modules在您的项目根目录(webpack 配置所在的位置)内优先于默认设置 "node_modules" ,通过 node module resolution 解析路径算法。
更多信息: Webpack docs: Module Resolution

关于web - 如何将 webpack 指向特定的 node_modules 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57544105/

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