mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-08-21 12:55:22 +00:00
Switch back to third party fetch lib for all node versions (#2961)
As discussed in https://github.com/MichMich/MagicMirror/pull/2952 Co-authored-by: veeck <michael@veeck.de>
This commit is contained in:
@@ -21,6 +21,8 @@ Special thanks to: @rejas, @sdetweil
|
|||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
- Removed usage of internal fetch function of node until it is more stable.
|
||||||
|
|
||||||
### Updated
|
### Updated
|
||||||
|
|
||||||
- Cleaned up test directory (#2937) and jest config (#2959)
|
- Cleaned up test directory (#2937) and jest config (#2959)
|
||||||
|
28
js/fetch.js
28
js/fetch.js
@@ -1,20 +1,28 @@
|
|||||||
/**
|
/**
|
||||||
* fetch
|
* Helper class to provide either third party fetch library or (if node >= 18)
|
||||||
|
* return internal node fetch implementation.
|
||||||
*
|
*
|
||||||
|
* Attention: After some discussion we always return the third party
|
||||||
|
* implementation until the node implementation is stable and more tested
|
||||||
|
*
|
||||||
|
* @see https://github.com/MichMich/MagicMirror/pull/2952
|
||||||
|
* @see https://github.com/MichMich/MagicMirror/issues/2649
|
||||||
* @param {string} url to be fetched
|
* @param {string} url to be fetched
|
||||||
* @param {object} options object e.g. for headers
|
* @param {object} options object e.g. for headers
|
||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
async function fetch(url, options = {}) {
|
async function fetch(url, options = {}) {
|
||||||
const nodeVersion = process.version.match(/^v(\d+)\.*/)[1];
|
// const nodeVersion = process.version.match(/^v(\d+)\.*/)[1];
|
||||||
if (nodeVersion >= 18) {
|
// if (nodeVersion >= 18) {
|
||||||
// node version >= 18
|
// // node version >= 18
|
||||||
return global.fetch(url, options);
|
// return global.fetch(url, options);
|
||||||
} else {
|
// } else {
|
||||||
// node version < 18
|
// // node version < 18
|
||||||
const nodefetch = require("node-fetch");
|
// const nodefetch = require("node-fetch");
|
||||||
return nodefetch(url, options);
|
// return nodefetch(url, options);
|
||||||
}
|
// }
|
||||||
|
const nodefetch = require("node-fetch");
|
||||||
|
return nodefetch(url, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = fetch;
|
module.exports = fetch;
|
||||||
|
@@ -1,4 +1,5 @@
|
|||||||
const jsdom = require("jsdom");
|
const jsdom = require("jsdom");
|
||||||
|
const corefetch = require("fetch");
|
||||||
|
|
||||||
exports.startApplication = async (configFilename, exec) => {
|
exports.startApplication = async (configFilename, exec) => {
|
||||||
jest.resetModules();
|
jest.resetModules();
|
||||||
@@ -82,8 +83,13 @@ exports.waitForAllElements = (selector) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// When native fetch is used keep-alive is set which causes issues with tests that should not share the connection, fall back to use the older one for now...
|
exports.fetch = (url) => {
|
||||||
exports.fetch = require("node-fetch");
|
return new Promise((resolve) => {
|
||||||
|
corefetch(url).then((res) => {
|
||||||
|
resolve(res);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
exports.testMatch = async (element, regex) => {
|
exports.testMatch = async (element, regex) => {
|
||||||
const elem = await this.waitForElement(element);
|
const elem = await this.waitForElement(element);
|
||||||
|
Reference in New Issue
Block a user