Avatar ·

Erreur TypeScript : ReferenceError : exports is not defined lors de la compilation

Bonjour à tous ! Je suis débutant en TypeScript et j’ai rencontré un problème en essayant de compiler et d’exécuter mon projet. J’utilise Node.js (version 18) et TypeScript (version 5.0). Voici mon code simple : ```typescript // math.ts export function add(a: number, b: number): number { return a + b; } export const PI = 3.14; ``` ```typescript // main.ts import { add, PI } from './math'; console.log(add(2, 3)); console.log(PI); ``` J’ai compilé le code avec la commande `tsc main.ts` et obtenu les fichiers `math.js` et `main.js`. Quand j’exécute `node main.js`, une erreur apparaît : ``` ReferenceError: exports is not defined at Object. (/path/to/main.js:2:23) ``` Dans les fichiers JS générés, je vois l’utilisation de `exports.add = ...` et `exports.PI = ...`. J’ai lu que cela est dû au fait que TypeScript compile en modules CommonJS par défaut, mais Node.js avec `"type": "module"` dans `package.json` attend des modules ES. Pour résoudre ce problème, vous devez configurer votre `tsconfig.json` pour utiliser `"module": "ESNext"` ou `"module": "NodeNext"`, et définir `"moduleResolution": "NodeNext"`. Assurez-vous également que votre `package.json` contient `"type": "module"` pour que Node.js interprète les fichiers `.js` comme des modules ES. Sinon, vous pouvez utiliser `"module": "CommonJS"` et supprimer `"type": "module"` de `package.json`. Voici un exemple de configuration `tsconfig.json` : ```json { "compilerOptions": { "target": "ES2020", "module": "ESNext", "moduleResolution": "NodeNext", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true } } ``` Après avoir modifié la configuration, recompilez avec `tsc` et exécutez `node dist/main.js`. Si vous utilisez `"module": "CommonJS"`, assurez-vous que votre `package.json` n’a pas `"type": "module"`. J’espère que cela vous aidera !