Open jins5 opened 2 hours ago
Bonsoir @jins5 , merci encore pour ce ticket complet. Je pense que le problème vient du fait que je n'ai pas rendu ma librairie compatible exports ESM et CJS, et donc problèmes lors d'un import dans un contexte différent de celui que j'ai en local. Selon moi, c'est un problème à régler de mon côté et pas du vôtre. Je devrais pouvoir corriger cela rapidement.
Bonsoir @frontBOI ,
Merci beaucoup pour votre réponse rapide et votre explication détaillée. Cela me rassure de savoir que le problème semble venir de la compatibilité ESM et CJS de la librairie. J'avais effectivement des doutes sur un potentiel souci de configuration, mais vos précisions me permettent de mieux comprendre la situation.
J'aurais aimé pouvoir me pencher sur ce problème moi-même et proposer une merge request, mais malheureusement, je n'ai jamais développé de package npm. Cela risque de me prendre pas mal de temps pour apprendre et maîtriser les bonnes pratiques, alors je préfère laisser cela à vos mains expertes.
Encore merci pour votre réactivité, et je reste disponible pour tester la correction dès que vous aurez eu le temps de la mettre en place.
Bonne soirée ! 😊
@jins5 v1.2.22
déployée sur npm, pouvez-vous tenter à nouveau ?
@jins5
v1.2.22
déployée sur npm, pouvez-vous tenter à nouveau ?
Je teste ça tout de suite ! Merci beaucoup de votre réactivité.
@frontBOI Je rencontre une nouvelle erreur avec la version @frontboi/mondial-relay: ^1.2.22. Voici les détails :
Failed to compile
./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/lib/utils.js:3:1
Module not found: Can't resolve 'soap'
1 | import statusCodes from './statusCodes';
2 | import crypto from 'crypto';
> 3 | import * as soap from 'soap';
| ^
4 | const apiUrl = 'https://api.mondialrelay.com/WebService.asmx?WSDL';
5 | /**
6 | * Executes an API call to the Mondial Relay APIv1.
https://nextjs.org/docs/messages/module-not-found
### Import trace for requested module:
- `./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/index.js`
- `./node_modules/@frontboi/mondial-relay/dist/esm/server/index.js`
- `./node_modules/@frontboi/mondial-relay/dist/esm/index.js`
@jins5 je viens de déployer la version 1.2.23
, elle est censée corriger ce problème.
Magnifique ! Un grand merci pour le push ! Tout fonctionne parfaitement. Je salue votre réactivité et la solution trouvée en un clin d'œil. Un vrai travail de pro ! 👏
@jins5 super, ravi de l'entendre. Merci c'est bien normal ! Si vous rencontrez d'autres problèmes n'hésitez pas. Bonne soirée 😄
@frontBOI Nouvelles erreur je pense à cause du hot fix de la création d'étiquette...
Elle se passe lors de :
import { ParcelShopSelector } from "@frontboi/mondial-relay";
import { getDeliveryPrice } from "@frontboi/mondial-relay";
Voici l'erreur :
⨯ ./node_modules/soap/lib/security/ClientSSLSecurity.js:4:1
Module not found: Can't resolve 'fs'
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.ClientSSLSecurity = void 0;
> 4 | const fs = require("fs");
| ^
5 | const https = require("https");
6 | const _ = require("lodash");
7 | /**
https://nextjs.org/docs/messages/module-not-found
Import trace for requested module:
./node_modules/soap/lib/security/index.js
./node_modules/soap/lib/soap.js
./node_modules/soap/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/lib/utils.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/index.js
Le fameux cercle vicieux des erreurs ... (désolé :/)
@jins5 alors ça c'est curieux. Pas sûr que ce soit un problème de ma lib pour le coup, mais pourriez-vous me fournir un cas de test que je reproduise en local ? Je vais voir ce que je peux faire.
Est-ce qu'on serait pas dans cette configuration ?
@frontBOI Non car lorsque je commente les parties du package aucune erreurs...
Voici un spécimen que j'ai utiliser pour tester, venant de votre doc :
"use client";
import { useState } from 'react'
// import { ParcelShopSelector } from '@frontboi/mondial-relay'
export default function MondialRelayMapSelector() {
const [parcelShop, setParcelShop] = useState(null)
return (
<div>
<h1> Choose a Mondial Relay parcel shop: </h1>
{/* <ParcelShopSelector
weight={3000} // (in grams) optional, filters parcel shops by package weight
nbResults={7} // optional (default: 7)
deliveryMode="24R" // optional (default: "24R)
brandIdAPI="BDTEST" // optional (default: "BDTEST", replace with your Brand Id API value for production usage)
defaultCountry="FR" // optional (default: "FR")
defaultPostcode="59000" // optional (default: "59000")
allowedCountries="FR,BG" // optional (default: "FR")
onParcelShopSelected={setParcelShop} // setter function when a parcel shop is clicked
/> */}
</div>
)
}
Voici la stack trace :
⨯ ./node_modules/soap/lib/security/ClientSSLSecurity.js:4:1
Module not found: Can't resolve 'fs'
2 | Object.defineProperty(exports, "__esModule", { value: true });
3 | exports.ClientSSLSecurity = void 0;
> 4 | const fs = require("fs");
| ^
5 | const https = require("https");
6 | const _ = require("lodash");
7 | /**
https://nextjs.org/docs/messages/module-not-found
Import trace for requested module:
./node_modules/soap/lib/security/index.js
./node_modules/soap/lib/soap.js
./node_modules/soap/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/lib/utils.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/server/index.js
./node_modules/@frontboi/mondial-relay/dist/esm/index.js
./src/app/[locale]/paiement/page.js
@frontBOI Je rencontre une nouvelle erreur avec la version @frontboi/mondial-relay: ^1.2.22. Voici les détails :
Failed to compile ./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/lib/utils.js:3:1 Module not found: Can't resolve 'soap' 1 | import statusCodes from './statusCodes'; 2 | import crypto from 'crypto'; > 3 | import * as soap from 'soap'; | ^ 4 | const apiUrl = 'https://api.mondialrelay.com/WebService.asmx?WSDL'; 5 | /** 6 | * Executes an API call to the Mondial Relay APIv1. https://nextjs.org/docs/messages/module-not-found ### Import trace for requested module: - `./node_modules/@frontboi/mondial-relay/dist/esm/server/api_v1/index.js` - `./node_modules/@frontboi/mondial-relay/dist/esm/server/index.js` - `./node_modules/@frontboi/mondial-relay/dist/esm/index.js`
Elle ressemble beaucoup à l'erreur que vous avez résolu auparavant
Issue : Erreur avec
createShipment
dans "@frontboi/mondial-relay" dans une APIroute.js
Description du problème :
Lors de l'utilisation de la fonction
createShipment
du package@frontboi/mondial-relay
dans une route d'API Next.js (route.js
), j'obtiens les erreurs suivantes :Lorsque j'importe avec les accolades (
{}
) :Erreur :
Lorsque j'importe sans accolades (
default import
) :Erreur :
Ce que j'ai essayé :
J'ai utilisé les mêmes données que l'exemple fourni dans la documentation officielle et via la commande
npm run demo:create_shipment
. Cela fonctionne correctement via cette commande, je reçois bien l'étiquette.J'ai vérifié si l'importation était correcte en testant à la fois :
{ createShipment }
.createShipment
.J'ai confirmé que le code tourne côté serveur dans une route API (
route.js
) de Next.js.Hypothèses :
Questions :
route.js
de Next.js ?Reproduction :
Voici le code minimal pour reproduire l'erreur :
Logs :
Avec importation nommée (
{}
) :Avec importation par défaut :
Contexte :
Objectif :
Je cherche à comprendre pourquoi l'importation de
createShipment
ne fonctionne pas dans ce contexte alors qu'elle fonctionne bien avec la commande CLI (npm run demo:create_shipment
) dans le repo test fourni. Et s'il y a des ajustements nécessaires pour que cela fonctionne dans une API route de Next.js.