hdo*_*adu 6 protocol-buffers web webpack grpc
我正在尝试构建一个grpcWeb 客户端,我需要打包代码来解析require语句。
我已经编译了protostojs 并且如果我将它们放在我安装node modules.
问题是如果我compiled proto在其他地方有 并且我从那里需要它们,在该路径中webpack寻找node modules。
从我的 client.js
工作版本:
const {StopRequest, StopReply} = require('./work_pb.js');
Run Code Online (Sandbox Code Playgroud)
有问题的版本:
const {StopRequest, StopReply} = require('../../../messages/proto/output/work_pb.js');
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,它查找node modulesin ../../../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
Run Code Online (Sandbox Code Playgroud)
我如何告诉webpack查看节点模块的当前路径而不是编译原型的路径?
可以指定resolve.modules自定义目录,Webpack 会在其中搜索具有绝对导入路径的模块:
// inside webpack.config.js
const path = require('path');
module.exports = {
//...
resolve: {
modules: [path.resolve(__dirname, 'node_modules'), 'node_modules']
}
};
Run Code Online (Sandbox Code Playgroud)
这将使node_modules您的项目根目录(webpack 配置所在的位置)优先于默认设置"node_modules",默认设置通过节点模块解析算法解析路径。
更多信息:Webpack 文档:模块解析
| 归档时间: |
|
| 查看次数: |
4884 次 |
| 最近记录: |