Облачная функция GCP: не удается найти модуль npm - PullRequest
0 голосов
/ 26 декабря 2018

поэтому я создаю облачную функцию, и я структурировал свой код в несколько файлов.

Мой index.js выглядит следующим образом:

const { postHandler } = require('./requestHandler.js');

const httpHandler = (req, res) => {
  const { method } = req;

  switch (method) {
    case 'POST':
      postHandler(req, res);
      break;
    case 'GET':
      getHandler(req, res);
      break;
    case 'DELETE':
      deleteHandler(req, res);
      break;
    case 'PUT':
      putHandler(req, res);
      break;
    default:
      return res.sendStatus(400).json({message: 'Invalid method. Allowed are POST, GET, DELETE'});
  }
}

exports.httpHandler = httpHandler

И это requestHandler

const createReviewApp = require('./createReviewApp')

const postHandler = ( req, res ) => {
  const { path } = req;
  return createReviewApp( req, res )
}

module.exports = { postHandler }

Это createReviewApp

const _compute = require('./computeClass.js');
const _dns = require('./dnsClass.js');
const _storage = require('./storageClass.js');

const createReviewApp = ( req, res ) => {
     // doing something
}

А это мой computeClass

const Compute = require('@google-cloud/compute')

const projectId = process.env.GOOGLE_PROJECT_ID;

class ComputeSingleton {
  constructor(){
    this.compute = new Compute({
      projectId,
    });
  }
  getVm({zoneName, vmName}){
    return this.getZone({zoneName}).vm(vmName).get();
  }
  getZone({zoneName}){
    return this.compute.zone(zoneName);
  }
  createVm({zoneName, vmName, config}){
    return this.getZone({zoneName}).createVM(vmName, config);
  }
  deleteVm({zoneName, vmName}){
    return this.getZone({zoneName}).vm(vmName).delete();
  }
}

module.exports = new ComputeSingleton()

Теперь в моем computeClass я получаю следующую ошибку:

 Cannot find module '@google-cloud/compute

У меня установлены зависимости, нужно ли поместить весь мой код в один файл?

Редактировать: Я тестирую его на эмуляторе nodejs функций

1 Ответ

0 голосов
/ 26 декабря 2018

Нет, вам не нужно иметь свой код в одном файле.Похоже, у вас просто нет @google-cloud/compute в вашем пакете проекта функций.json и он полностью установлен.

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