Skip to content

Latest commit

 

History

History
56 lines (39 loc) · 1.87 KB

FAQ.md

File metadata and controls

56 lines (39 loc) · 1.87 KB

Custom Request Libraries

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,
});

Handling HTTPS certificates

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 the gitlab library. The rejectUnauthorized key is the only way to allow insecure certificates to be bypassed.

Support for Node v16.18+

Since everything builds off fetch support, applying a poly fill will allow for Node v16.18 instead of 18+. ie:

  1. Install node-fetch
  2. Set the following in your entry point:
const semver = require('semver')

if ( semver.lt(process.version, '20.0.0') ) {
  global.fetch = require('node-fetch')
}

Headers / Body Timeout Error

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,
});