hdo*_*adu 6 protocol-buffers web webpack grpc
我正在尝试构建一个grpc
Web 客户端,我需要打包代码来解析require
语句。
我已经编译了protos
tojs
并且如果我将它们放在我安装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 modules
in ../../../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 次 |
最近记录: |