Dépannage des problèmes d'environnement de préparation avec Cloudflare Workers
Une étape essentielle du processus de développement consiste à mettre en place un environnement de test afin que les mises à jour puissent être correctement testées avant d'être mises en ligne. Dans ce cas, Cloudflare Workers veillait au bon fonctionnement du site Web principal en cours de développement.
Après avoir cloné le référentiel Git existant et l'avoir connecté à l'environnement de test via Cloudflare Workers & Pages, tout semblait bien fonctionner. Les journaux indiquaient que le déploiement avait réussi, ce qui signalait généralement la création d'une instance active.
Mais lorsque le développeur a tenté d'accéder à l'adresse Cloudflare donnée, un message d'erreur 404 est apparu, le laissant incertain de ce qui n'allait pas. Il peut être ennuyeux de traiter des problèmes de cette nature, en particulier lorsque l'on pense que le serveur doit être opérationnel immédiatement après son déploiement.
On ne sait pas si un deuxième serveur est nécessaire ou s'il y a autre chose à faire pour activer complètement le nouveau référentiel. Nous examinerons les causes de ce problème 404 et comment configurer correctement le serveur Cloudflare Workers pour l'environnement de test dans cet article.
Commande | Exemple d'utilisation |
---|---|
window.onload | Cet événement JavaScript est déclenché une fois que tout le contenu de la page, y compris les feuilles de style, les images et les ressources externes, est complètement chargé. Il garantit que ce n’est qu’une fois la page préparée que la vérification de la redirection commence. |
fetch() | Une API pour les navigateurs actuels utilisée pour demander des réseaux. Dans ce cas, il utilise Cloudflare pour vérifier si une URL ou une ressource est disponible. Dans le cas où la demande échoue ou renvoie une erreur 404, d'autres étapes peuvent être lancées. |
response.status | Le code d'état HTTP renvoyé par la demande d'extraction peut être examiné à l'aide de cet attribut. Dans notre exemple, il détermine si la réponse est 404 (ressource introuvable) et, si oui, démarre une redirection personnalisée. |
addEventListener('fetch') | Chaque fois que le travailleur répond à une requête réseau, cette méthode surveille les événements de récupération. Nous pouvons l'utiliser pour gérer les problèmes au sein de Cloudflare Workers ou intercepter ces demandes et renvoyer des réponses personnalisées. |
new Response() | Génère un nouvel objet de réponse HTTP contenant des en-têtes, un corps personnalisé et un code d'état personnalisé. Lorsqu'une ressource ne peut pas être localisée, elle est utilisée pour fournir des réponses dynamiques, comme la fourniture d'une page 404 personnalisée. |
assert.equal() | Cette méthode du module d'assertion Node.js compare deux valeurs pour l'égalité. Pour s'assurer que le code d'état prévu (200, 404) correspond à la vraie réponse des pages Cloudflare, il est fréquemment utilisé dans les tests unitaires. |
describe() | Cette méthode du module d'assertion Node.js compare deux valeurs pour l'égalité. Pour s'assurer que le code d'état prévu (200, 404) correspond à la vraie réponse des pages Cloudflare, il est fréquemment utilisé dans les tests unitaires. |
event.respondWith() | Utilisé dans Cloudflare Workers pour remplacer une réponse personnalisée par défaut. Il vous permet de modifier la façon dont les demandes sont traitées, ce qui est utile pour détecter les problèmes 404 et fournir des informations personnalisées. |
async function | En définissant une fonction asynchrone, ce mot-clé permet la gestion des promesses avec wait. Dans ce cas, il garantit que le script attend l'exécution de toute logique supplémentaire jusqu'à ce que la requête réseau soit résolue. |
Comment les travailleurs et les scripts Cloudflare gèrent les erreurs 404
Le premier script de l'exemple donné montre comment utiliser Javascript pour gérer une erreur 404 sur le frontend. Le script utilise le fenêtre.onload événement pour attendre que la page soit complètement chargée. La page fait un aller chercher demande de voir si la ressource est disponible une fois chargée. L'utilisateur est envoyé vers une page d'erreur personnalisée si la ressource renvoie une erreur 404. Ne nécessitant aucune implication du backend, cette technique est particulièrement utile pour gérer les échecs directement dans le navigateur de l'utilisateur et fournir une solution de secours pour les pages ou ressources manquantes.
Dans le deuxième exemple, le script gère les requêtes à l'aide d'un Travailleur Cloudflare à mesure qu'il se déplace vers le backend. Le travailleur utilise le addEventListener méthode pour écouter les événements et intercepter les demandes de récupération lorsqu'elles sont effectuées. Dans le cas où une erreur 404 se produit en raison de l'absence de la page demandée, le travailleur fournira dynamiquement une page d'erreur personnalisée. Cette stratégie fonctionne bien pour gérer les réponses du serveur et offre un moyen plus adaptable et plus sûr de gérer les erreurs, en particulier lorsque vous travaillez avec divers contextes tels que la production et la préparation ou le contenu dynamique.
Afin de garantir que les scripts frontend et backend sont déployés et fonctionnent correctement, les tests unitaires sont introduits dans le troisième exemple. Il effectue des tests automatisés pour voir si le déploiement Cloudflare Pages renvoie les codes d'état HTTP corrects à l'aide de Noeud.js et un framework de test tel que Mocha. Les tests pour la page principale (qui supposent un statut 200) et les tests pour une page inexistante (qui attendent un statut 404) sont tous deux inclus dans la suite de tests. Ces tests garantissent que tout est déployé comme prévu et que toute page ou lien rompu entraîne la réponse appropriée.
De plus, l'utilisation de affirmer Les commandes garantissent que toute différence dans les codes d’état de réponse est détectée immédiatement. Dans les pipelines d'intégration et de déploiement continus (CI/CD), où garantir le comportement de déploiement est crucial pour éviter les temps d'arrêt ou les ruptures de connexions, les tests sont indispensables. Tout bien considéré, la fusion de la redirection front-end, de la gestion des erreurs back-end et des tests unitaires offre une approche approfondie pour garantir le fonctionnement transparent de votre déploiement Cloudflare Workers, même face à des ressources absentes ou à des conditions personnalisées telles qu'un serveur intermédiaire.
Solution 1 : résolution de l'erreur Cloudflare 404 à l'aide de la redirection JavaScript frontend
En renvoyant le visiteur vers une page de secours dans le cas où la ressource demandée ne peut pas être récupérée, cette méthode utilise JavaScript pour gérer la redirection et éviter une erreur 404.
// Frontend JavaScript for handling redirection
// This script checks if a resource is available on the Cloudflare page
// If not, it redirects to a fallback page
window.onload = function () {
fetch(window.location.href)
.then(response => {
if (response.status === 404) {
window.location.href = '/404.html'; // Redirect to custom 404 page
}
})
.catch(error => {
console.error('Error fetching the page:', error);
window.location.href = '/error.html'; // Redirect to error page
});
};
Solution 2 : Backend Cloudflare Worker pour gérer les erreurs 404
Dans cette solution, 404 échecs sont acheminés vers une page de secours personnalisée et les demandes sont traitées par Cloudflare Workers. Pour la gestion dynamique du backend de Cloudflare, ce script est parfait.
// Cloudflare Worker script for managing 404 errors
// The script checks if the requested path exists, and if not, returns a custom 404 page
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
async function handleRequest(request) {
try {
const response = await fetch(request);
if (response.status === 404) {
return new Response('Custom 404 Page', { status: 404 });
}
return response;
} catch (error) {
return new Response('Error occurred: ' + error.message, { status: 500 });
}
}
Solution 3 : vérification du déploiement et tests unitaires pour les pages Cloudflare
Cette méthode comprend des tests unitaires pour vérifier le fonctionnement des scripts frontend et backend, et vérifie si le déploiement Cloudflare Pages est actif.
// Example unit test for deployment verification
// Using JavaScript to ensure that Cloudflare Pages return the correct response
const assert = require('assert');
const fetch = require('node-fetch');
describe('Cloudflare Deployment Test', function() {
it('should return 200 for the main page', async function() {
const response = await fetch('https://your-domain.pages.dev');
assert.equal(response.status, 200);
});
it('should return 404 for non-existent page', async function() {
const response = await fetch('https://your-domain.pages.dev/unknown');
assert.equal(response.status, 404);
});
});
Comprendre l'environnement de transfert de Cloudflare Workers
À des fins de développement, l'installation d'un environnement de test peut s'avérer cruciale lorsque vous travaillez avec Travailleurs Cloudflare. Les développeurs peuvent tester leurs applications dans un environnement intermédiaire avant de les déployer sur le serveur de production. Pour éviter des problèmes tels que l'erreur 404 indiquée, cet environnement doit être configuré correctement lors de sa première configuration. Les développeurs pensent souvent qu'il suffit de cloner un référentiel GitHub et de le connecter aux pages Cloudflare pour lancer un serveur actif. Bien que Cloudflare déploie automatiquement des sites statiques, si la configuration de routage du travailleur n'est pas correctement configurée, des problèmes peuvent survenir.
Une erreur 404 signifie souvent que la requête n'est pas correctement interceptée par le Travailleur. Des règles de routage personnalisées sont nécessaires pour que Cloudflare Workers puisse garantir que les demandes sont envoyées au bon endroit. Même après le lancement du site, les requêtes sur certaines pages peuvent renvoyer une erreur 404 si ces routes ne sont pas configurées. Il est également crucial de s'assurer que le script Worker est connecté au domaine intermédiaire. Ces erreurs peuvent être réduites pendant le développement en utilisant un travailleur bien organisé et en validant les itinéraires.
Faire en sorte que le Worker soit toujours connecté à votre domaine intermédiaire est une autre étape cruciale. Il peut arriver que Worker ne parvienne pas à se lier automatiquement au nouvel environnement lors du déploiement, en particulier lorsqu'il existe plusieurs environnements (tels que la production et le staging). Pour lier manuellement le Worker à un environnement particulier et s'assurer qu'il traite les demandes de manière appropriée, les développeurs peuvent utiliser le tableau de bord de Cloudflare. Pour que les environnements de préparation et de production fonctionnent correctement et sans erreur, cette étape est nécessaire.
Questions courantes sur les travailleurs Cloudflare et les erreurs 404
- Qu'est-ce qui provoque une erreur 404 après le déploiement d'un Cloudflare Worker ?
- Les règles de routage ne sont pas configurées ou sont mal attachées Worker au domaine en sont les causes habituelles.
- Pages.dev nécessite-t-il un serveur pour fonctionner ?
- Non, un serveur n'est pas nécessaire. Bien que le déploiement de sites statiques soit géré automatiquement par Cloudflare pages.dev, assurez-vous que le Worker est correctement lié.
- Comment puis-je résoudre l'erreur 404 d'un domaine intermédiaire ?
- Assurez-vous que le script Worker dispose des routes requises configurées et que le Worker est associé au domaine.
- Est-il possible d'utiliser un référentiel GitHub simultanément pour la production et le staging ?
- Oui, mais afin d'éviter les conflits, vous devrez créer des branches et une configuration distinctes. Workers pour chaque environnement indépendamment.
- Les travailleurs abordent-ils la mise en scène et la production différemment ?
- Non, mais afin d'éviter des problèmes de déploiement, assurez-vous que chaque environment a son Worker configuré correctement.
Points clés à retenir pour la configuration des Workers Cloudflare
Un attachement approprié au domaine et une définition minutieuse des règles de routage sont nécessaires pour garantir le bon fonctionnement de Cloudflare Workers. Pour éviter les erreurs 404, ces actions sont essentielles à la fois pour les paramètres de production et de préparation.
Pour garantir une préparation réussie, confirmez toujours que le Worker est correctement connecté à l'environnement approprié et vérifiez vos paramètres de déploiement. En résolvant ces problèmes, les temps d’arrêt seront réduits et un déploiement transparent sera assuré.
Sources et références pour la configuration des Cloudflare Workers
- Décrit en détail l'utilisation de Cloudflare Workers pour le déploiement d'applications sans serveur et les étapes de dépannage courantes pour les erreurs 404. Récupéré de Documentation des travailleurs Cloudflare .
- Fournit des informations sur les environnements de test et sur la manière de gérer les déploiements via Cloudflare Pages. Plus de détails disponibles sur Présentation des pages Cloudflare .
- Discute de la connexion des référentiels GitHub à Cloudflare Workers et de l'impact sur le routage dynamique. Référence tirée de GitHub - Dépôts Cloudflare .