тестовая служба завершается с ошибкой «до всех» ловушка: до того, как в «тестовой службе» все серверы остановились - PullRequest
0 голосов
/ 22 апреля 2020

Я создал ложную серверную функцию для тестирования. Он отлично работает с serverless offline start, но при развертывании выдает ошибку

"before all" hook: before in "test service": Error: Timeout of 80000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves

    describe('test service', () => {
      before(async function before() {
        this.timeout(80000);
        await startServers();
      });

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

FetchError: request to https://api.serverless.com/core/tenants/devname/applications/appname/profileVal``failed, reason: getaddrinfo ENOTFOUND api.serverless.com at ClientRequest.<anonymous> (F:\CodeBase\orca\node_modules\isomorphic fetch\node_modules\node-fetch\index.js:133:11) at ClientRequest.emit (events.js:223:5) at ClientRequest.EventEmitter.emit (domain.js:475:20) at TLSSocket.socketErrorListener (_http_client.js:406:9) at TLSSocket.emit (events.js:223:5) at TLSSocket.EventEmitter.emit (domain.js:475:20) at emitErrorNT (internal/streams/destroy.js:92:8) at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) at processTicksAndRejections (internal/process/task_queues.js:81:21)

For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

Я относительно новичок в области без серверов, и уже потратил на это немало времени. Кто-нибудь может подсказать, что я должен делать, и кто-то может сказать мне, как установить поля org и app для безсерверных, как я установил env? мой slsOfflineMockServer. js

    const path = require('path');
    const { spawn, exec } = require('child_process');

    class SlsOfflineServer {
      async start(port, env = {}) {
        if (this.server) return;

        const slsBin ='serverless';

        this.server = spawn(slsBin, ['offline', 'start', '--port', port], {
          env: { ...process.env, ...env },
          shell: true,
        });

        await new Promise((resolve) => {
          this.server.stdout.on('data', (data) => {
            const dataStr = data.toString();

            if (
              dataStr.includes('FetchError')
              || dataStr.includes('Serverless Warning')
              || dataStr.includes('Serverless Error')
            ) console.log(dataStr);

            if (dataStr.includes('listening on')) resolve();
          });

          this.server.stderr.on('data', (data) => {
            console.log(data.toString());
          });
        });
      }
    }

module.exports = SlsOfflineServer;
...