Я создал ложную серверную функцию для тестирования. Он отлично работает с 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;