Error 500 : ma requête ?
Joemeek
2024-04-24 18:51:14
const executePythonScript = async () => {
try {
const response = await fetch('/api/execute-python', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
});
dans mon app Next.js j'ai : pages\api\execute-python.js
comment trouver ce qui ne va pas ?
I_am_the_devil
2024-04-24 18:53:18
J’ai vu l’erreur en 5 secondes, c’est une erreur de débutant, je préfère te laisser chercher, comme ça la prochaine fois tu ne feras plus la même erreur.
Joemeek
2024-04-24 18:54:13
Le 24 avril 2024 à 18:53:53 Haine-word a écrit :
demande à chatgpt
il trouve pas
Research16384
2024-04-24 18:54:34
method: 'POST',
https://image.noelshack.com/fichiers/2017/30/4/1501186885-risitasueurbestreup.png
Jekkej
2024-04-24 18:55:42
Utiliser le pages router en 2k24...
Joemeek
2024-04-24 18:57:18
Le 24 avril 2024 à 18:55:42 Jekkej a écrit :
Utiliser le pages router en 2k24...
explique pas surtout
Jekkej
2024-04-24 18:57:24
L'auteur a aucune idée de ce qu'il est en train de faire.
Je me demande qu'est-ce qu'il lui a pris d'essayer des trucs au hasard comme ça en pensant que ça allait marcher.
EDIT : Et il a supprimé son message.
PneuTueur67
2024-04-24 18:58:45
Explique surtout pas à quoi sert ton code et ce que tu veux faire avec
Joemeek
2024-04-24 18:59:16
Le 24 avril 2024 à 18:57:24 Jekkej a écrit :
L'auteur a aucune idée de ce qu'il est en train de faire.
Je me demande qu'est-ce qu'il lui a pris d'essayer des trucs au hasard comme ça en pensant que ça allait marcher.
EDIT : Et il a supprimé son message.
au hasard ? j'essaie d'appeler un fichier pour faire un fetch dessus, y'a rien de hasard
PneuTueur67
2024-04-24 18:59:31
Quel est l'intérêt de passer la requête en POST si tu n'envoies aucune donnée déjà ?
RoiJej
2024-04-24 18:59:48
C'est côté serveur non ? Vérifie en débuggant du côté de ton endpoint voir si tu y accède ou non
Jekkej
2024-04-24 19:00:17
Appeler un fichier avec POST ? T'essaye d'envoyer quoi au juste ? Et montre pas le fichier sur lequel tu fais ta requête surtout, on pourrait t'aider par erreur...
RoiJej
2024-04-24 19:00:24
Le 24 avril 2024 à 18:59:16 :
Le 24 avril 2024 à 18:57:24 Jekkej a écrit :
L'auteur a aucune idée de ce qu'il est en train de faire.
Je me demande qu'est-ce qu'il lui a pris d'essayer des trucs au hasard comme ça en pensant que ça allait marcher.
EDIT : Et il a supprimé son message.
au hasard ? j'essaie d'appeler un fichier pour faire un fetch dessus, y'a rien de hasard
Ça serait plutôt un get si tu veux récupérer, un post c'est plutôt pour sauvegarder
Tirie14_2
2024-04-24 19:00:44
Le code que tu m'as partagé semble être une fonction JavaScript asynchrone appelée `executePythonScript`. Voici une analyse détaillée de ce que fait cette fonction, ainsi que des éventuels problèmes ou erreurs :
### Fonctionnalité
1. **Nom de la fonction** : `executePythonScript` - Il semble que cette fonction est destinée à exécuter un script Python. Cela pourrait être fait en envoyant une requête à un serveur backend qui exécute le script Python et renvoie le résultat.
2. **Utilisation de l'asynchrone** : La fonction utilise `async` et `await`, ce qui permet de gérer des opérations asynchrones, comme des requêtes HTTP, de manière plus lisible et efficace.
3. **Requête HTTP** : La fonction envoie une requête HTTP de type POST à l'URL `/api/execute-python`.
4. **Headers de la requête** : La requête inclut un en-tête spécifiant que le contenu de la requête est de type JSON (`'Content-Type': 'application/json'`).
### Problèmes Potentiels ou Erreurs
1. **Corps de la requête manquant** : Bien que la fonction spécifie que le contenu est de type JSON, elle ne passe aucun corps de requête. Pour une API qui attend des données pour exécuter un script Python, il est typique de devoir envoyer des données, par exemple le script à exécuter ou d'autres paramètres nécessaires.
2. **Gestion des erreurs** : La fonction utilise un bloc `try` pour attraper les erreurs qui peuvent survenir lors de l'exécution de la requête HTTP. Cependant, il n'y a pas de bloc `catch` affiché dans le code que tu as fourni. Il est crucial d'inclure un bloc `catch` pour gérer correctement les erreurs qui peuvent survenir pendant la requête HTTP, comme un problème de connexion ou un code de réponse non réussi du serveur.
3. **Traitement de la réponse** : Le code récupère la réponse avec `await fetch(...)`, mais il ne fait rien avec cette réponse. Habituellement, il faudrait traiter cette réponse, par exemple en vérifiant le code de statut de la réponse ou en analysant la réponse JSON pour utiliser les données retournées.
4. **Code incomplet** : Le code partagé est incomplet car il manque la fin de la fonction, y compris le bloc `catch` pour les erreurs et le code pour retourner ou traiter la réponse.
### Suggestions pour l'amélioration
1. **Ajouter un corps à la requête POST** : Si nécessaire, inclure des données dans la requête POST en ajoutant une propriété `body` à l'objet d'options dans `fetch`.
2. **Compléter le traitement de la réponse** : Ajouter du code pour vérifier le statut de la réponse et pour traiter les données retournées, par exemple en convertissant la réponse en JSON.
3. **Ajouter un bloc `catch`** : Inclure un bloc `catch` après le bloc `try` pour attraper et gérer les erreurs de manière appropriée.
4. **Compléter le code** : Assurez-vous que le code est complet, y compris la fermeture des accolades et des parenthèses, et qu'il retourne ou traite correctement la réponse.
Voilà une analyse assez complète basée sur le snippet que tu as fourni. Pour une analyse plus précise, le reste du code serait nécessaire.
https://image.noelshack.com/fichiers/2017/13/1490726853-96849684896496869.gif
Joemeek
2024-04-24 19:01:08
Oui je me suis trompé
// Jobsearchbar.tsx
"use client";
import React, { useState } from 'react';
const Jobsearchbar = () => {
const [pythonOutput, setPythonOutput] = useState('');
const executePythonScript = async () => {
try {
const response = await fetch('/api/execute-python', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
},
});
const data = await response.text(); // Récupérer la réponse sous forme de texte
setPythonOutput(data);
} catch (error) {
console.error('Error executing Python script:', error);
}
};
return (
<div>
<h1>Python Script Output</h1>
<button onClick={executePythonScript}>Execute Python Script</button>
<pre>{pythonOutput}</pre>
</div>
);
};
export default Jobsearchbar;
Joemeek
2024-04-24 19:01:43
mon fichier execute-python
import { exec } from 'child_process';
export default function handler(req, res) {
if (req.method === 'GET') {
// Utilisez un chemin absolu vers votre script Python
const pythonScriptPath = '../../src/app/search/search.py';
console.log(`Exécution du script à: ${pythonScriptPath}`);
exec(`python ${pythonScriptPath}`, (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
console.error(error); // Afficher l'erreur dans la console du serveur
return res.status(500).json({ error: 'Failed to execute Python script' });
}
console.error(`stderr: ${stderr}`);
if (stderr) {
console.error(stderr); // Afficher les erreurs Python dans la console
return res.status(500).send(stderr);
}
res.status(200).send(stdout);
});
} else {
res.status(405).json({ error: 'Method Not Allowed' });
}
}
Joemeek
2024-04-24 19:02:43
et mon fichier python
import requests
from bs4 import BeautifulSoup
# URL de l'offre d'emploi
job_url = "https://www.hellowork.com/fr-fr/emplois/41187184.html"
# Mots-clés recherchés
keywords = ["Node.js", "JavaScript", "TypeScript", "React", "Angular"]
# Récupérer le contenu HTML
response = requests.get(job_url)
html_content = response.content
# Analyser le contenu HTML avec BeautifulSoup
soup = BeautifulSoup(html_content, "html.parser")
# Extraire les informations pertinentes
job_description = soup.find("div", {"class": "job-description"}).get_text()
experience_required = soup.find("div", {"class": "experience-required"}).get_text()
# Vérifier la présence des mots-clés dans la description
matched_keywords = [kw for kw in keywords if kw.lower() in job_description.lower()]
# Comparer les exigences avec votre profil
# (cette partie dépend de la façon dont vous stockez votre profil)
# Afficher ou stocker les résultats
if matched_keywords:
print(f"Offre d'emploi pertinente pour : {', '.join(matched_keywords)}")
print(f"Description : {job_description}")
print(f"Expérience requise : {experience_required}")
# ...
else:
print("Cette offre d'emploi ne correspond pas à vos critères.")