There is another constructor parameter that allows the user to specify their custom request library. To specify the library, simply set the requester
property when instantiating a service:
An example can be seen in the Requester.ts file.
import { Gitlab } from '@gitbeaker/rest';
import YourCustomRequester from 'custom-requester';
const api = new Gitlab({
host: 'http://example.com',
token: 'personaltoken',
requester: YourCustomRequester,
});
If your Gitlab server is running via HTTPS, the proper way to pass in your certificates is via a NODE_EXTRA_CA_CERTS
environment key, like this:
"scripts": {
"start": "NODE_EXTRA_CA_CERTS=./secrets/3ShapeCA.pem node bot.js"
},
NOTE: Using
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'
will not work with thegitlab
library. TherejectUnauthorized
key is the only way to allow insecure certificates to be bypassed.
Since everything builds off fetch support, applying a poly fill will allow for Node v16.18 instead of 18+. ie:
- Install node-fetch
- Set the following in your entry point:
const semver = require('semver')
if ( semver.lt(process.version, '20.0.0') ) {
global.fetch = require('node-fetch')
}
This is caused by the internal undici fetch implementation's dispatcher defaults for the headers and body timeout when performing a request. In the future we will support modifying these properties in a more defined way, but for now, once can override this by setting the global symbol at the beginning of your script:
import { Agent } from 'undici'
globalThis[Symbol.for("undici.globalDispatcher.1")] = new Agent({
headersTimeout: 0,
bodyTimeout: 0,
});