Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我在使用webpack构建节点应用程序时遇到问题_Javascript_Node.js_Webpack - Fatal编程技术网

Javascript 我在使用webpack构建节点应用程序时遇到问题

Javascript 我在使用webpack构建节点应用程序时遇到问题,javascript,node.js,webpack,Javascript,Node.js,Webpack,让我描述一下我的问题。我用ES6开发了一个Node.js应用程序,它是一个REST API,使用了几个节点模块,特别是来自google cloud的模块,因为我使用的是google cloud Vision和Translate API 到目前为止还没有问题,一切正常,但当我想在Windows服务器上将其作为服务运行时,出现了问题。我找到了一种使用节点模块“节点窗口”的方法 我在那篇文章中创建了服务脚本,该服务已安装并显示在Windows服务列表中,但当我单击启动时,它立即停止 经过一些分析,我记

让我描述一下我的问题。我用ES6开发了一个Node.js应用程序,它是一个REST API,使用了几个节点模块,特别是来自google cloud的模块,因为我使用的是google cloud Vision和Translate API

到目前为止还没有问题,一切正常,但当我想在Windows服务器上将其作为服务运行时,出现了问题。我找到了一种使用节点模块“节点窗口”的方法

我在那篇文章中创建了服务脚本,该服务已安装并显示在Windows服务列表中,但当我单击启动时,它立即停止

经过一些分析,我记得我使用的是ES6,需要传输到ES5才能像标准节点脚本一样工作,所以我认为用webpack构建整个应用程序可以解决这个问题,但不完全是这样,我用webpack生成bundle.js时没有任何错误(只是一些警告),然后,当我尝试使用
节点/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我不认为这是一个加载程序问题,而是一个路径问题。你能试着要求原始文件吗从给定路径?如果您试图导入模块或需要模块,网页包加载器将出现在图片中。请检查您的路径生成。