Невозможно связать Googleapis с Webpack - PullRequest
0 голосов
/ 03 марта 2020

Я хотел бы, чтобы webpack выводил пакет, содержащий встроенный пакет googleapis (или, по крайней мере, свернутый в выходном каталоге).

Моя цель - предоставить моему коду доступ к API разработчика Google Play (через пакет googleapis), развернутому на стороне сервера в AWS Lambda (NodeJS 10.x runtime). В настоящее время это может выполняться локально.

Вот мои Javascript:

import { google } from 'googleapis';

exports.handler = async (event) => {
  // Service Account authentication 
  let auth = new google.auth.GoogleAuth({
    credentials: {
      client_email: "abcde@api-123456.iam.gserviceaccount.com",
      private_key: "PRIVATE_KEY_HERE"
    },
    scopes: ['https://www.googleapis.com/auth/androidpublisher']
  });
  const authClient = await auth.getClient();

  // Google Play Developer API
  const androidPublisher = new androidpublisher_v3.Androidpublisher({
    auth: authClient,
  });
  console.log("Google Play Developer API created");
  console.log(androidPublisher);

  return {
    statusCode: 200,
    body: JSON.stringify({ 'message': 'hello' })
  }
}

Вот мои webpack.config.js:

const nodeExternals = require('webpack-node-externals');

module.exports = {
  entry: [
    './example.js',
  ],
  target: 'node',
  externals: [nodeExternals()],
  devtool: 'inline-source-map',
  output: {
    filename: 'handler.js',
  },
  plugins: []
}

Наконец, вот мои package.json:

{
  "name": "test_gapi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "googleapis": "^47.0.0",
    "webpack-node-externals": "^1.7.2"
  },
  "devDependencies": {
    "webpack": "^4.42.0"
  }
}

Я попытался запустить webpack mode --development и вижу, что вывод handler.js не содержит код пакета googleapis, а вместо этого содержит require(googleapis).

Если Я развернул zip-каталог dist как есть на AWS Lambda (около 11 килобайт), он не может найти модуль. Но если я добавлю каталог node_modules в zip, AWS Lambda прекрасно выполняет код, но артефакт zip составляет около 10 мегабайт.

Поэтому мне интересно, почему webpack не связывает зависимости в выходной файл javascript, и если это можно сделать, можно ли его минимизировать в рабочей среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...