У меня проблема с созданием приложения Node с помощью веб-пакета - PullRequest
0 голосов
/ 16 ноября 2018

Позвольте мне описать мою проблему.Я разработал приложение Node.js с ES6, это REST API, использующий несколько модулей Node, особенно из Google-облака, потому что я использую Google Cloud Vision и Translate API.

До сих пор проблем не было, все работает как положено, но все пошло не так, когда я захотел запустить его как службу на Windows Server.Я нашел способ сделать это здесь , используя Node-модуль "node-windows".

Я сделал служебный скрипт, как в этом посте, и служба была установлена ​​и показана в списке служб Windows, но когда я нажимаю, чтобы запустить, она немедленно останавливается.

После некоторого анализа я вспомнил, что использую ES6, который необходимо перенести в ES5, чтобы работать как стандартный скрипт Node, поэтому я подумал, что создание всего моего приложения с помощью веб-пакета решит эту проблему для меня, но не совсем, Я получил свой bundle.js с помощью веб-пакета без каких-либо ошибок (только некоторые предупреждения), затем, когда я пытаюсь запустить его с node ./bundle.js, он возвращает ошибки вроде:

Error: The include '/protos/google/cloud/vision/v1/image_annotator.proto' was not found.

Хотя я установил правило в своем конфигурационном файле веб-пакета для поддержки файлов .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"
        }
      }
    ]
  }
};

На этом уровнеЯ понятия не имею, как сделать эти файлы .proto google-cloud интегрируемыми в мой bundel.js, может кто-нибудь, пожалуйста, подскажите мне?спасибо.

Это код из grpc.js внутри модуля @ google-cloud, который пытается разрешить пути к файлам .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);
    };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...