Javascript 我在使用webpack构建节点应用程序时遇到问题
让我描述一下我的问题。我用ES6开发了一个Node.js应用程序,它是一个REST API,使用了几个节点模块,特别是来自google cloud的模块,因为我使用的是google cloud Vision和Translate API 到目前为止还没有问题,一切正常,但当我想在Windows服务器上将其作为服务运行时,出现了问题。我找到了一种使用节点模块“节点窗口”的方法 我在那篇文章中创建了服务脚本,该服务已安装并显示在Windows服务列表中,但当我单击启动时,它立即停止 经过一些分析,我记得我使用的是ES6,需要传输到ES5才能像标准节点脚本一样工作,所以我认为用webpack构建整个应用程序可以解决这个问题,但不完全是这样,我用webpack生成bundle.js时没有任何错误(只是一些警告),然后,当我尝试使用Javascript 我在使用webpack构建节点应用程序时遇到问题,javascript,node.js,webpack,Javascript,Node.js,Webpack,让我描述一下我的问题。我用ES6开发了一个Node.js应用程序,它是一个REST API,使用了几个节点模块,特别是来自google cloud的模块,因为我使用的是google cloud Vision和Translate API 到目前为止还没有问题,一切正常,但当我想在Windows服务器上将其作为服务运行时,出现了问题。我找到了一种使用节点模块“节点窗口”的方法 我在那篇文章中创建了服务脚本,该服务已安装并显示在Windows服务列表中,但当我单击启动时,它立即停止 经过一些分析,我记
节点/bundle.js运行它时,它会返回如下错误:
错误:未找到include'/protos/google/cloud/vision/v1/image\u annotator.proto'。
虽然我在我的网页配置文件中制定了一个规则来支持.proto文件
这是我的webpack.config.js:
module.exports = {
target: "node",
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.json$/,
exclude: /node_modules/,
use: {
loader: "json-loader"
}
},
{
test: /\.proto$/,
use: {
loader: "pbf-loader"
}
},
{
test: /\.html$/,
use: {
loader: "html-loader"
}
}
]
}
};
在这个级别上,我不知道如何将那些googlecloud.proto文件集成到我的bundel.js中,有人能指导我吗?谢谢
这是@google cloud模块中grpc.js的代码,该模块试图解析.proto文件路径:
GoogleProtoFilesRoot.prototype.resolvePath = function (originPath, includePath) {
originPath = path.normalize(originPath);
includePath = path.normalize(includePath);
// Fully qualified paths don't need to be resolved.
if (path.isAbsolute(includePath)) {
if (!fs.existsSync(includePath)) {
throw new Error('The include `' + includePath + '` was not found.');
}
return includePath;
}
if (COMMON_PROTO_FILES.indexOf(includePath) > -1) {
return path.join(googleProtoFilesDir, includePath);
}
return GoogleProtoFilesRoot._findIncludePath(originPath, includePath);
};
我从未使用过webpack,但我看到您的其他加载程序被包装在use
块中(即use:{loader:json loader}
,但您的protobuf加载程序没有包装在use
块中。更改会有什么不同吗?根据文档@“pbf装载机"
您能在包含文件的地方添加代码吗?@nbokmans谢谢您的快速回复我没有注意到抱歉,但更改它没有任何区别。@pranaytripath谢谢您的回复,我将其包含在post@Ahmed我不认为这是一个加载程序问题,而是一个路径问题。你能试着要求原始文件吗从给定路径?如果您试图导入模块或需要模块,网页包加载器将出现在图片中。请检查您的路径生成。