node.js - Konflikt mellem RequireJs og NodeJS-definitioner i Typescript


Jeg fik Typescript RequireJS definitionen fra Definitely Typed - som har en ambient deklaration af Require, der konflikter med NodeJs kommandoen "require". Her er deklarationen og fejlen:

Erklæring :

declare var require: Require;

Fejl :

C:/.../require.d.ts(320,13): error TS2134: Subsequent variable declarations must have the same type.  Variable 'require' must be of type '{ resolve(id: string): string; cache: any; extensions: any; main: any; (id: string): any; }', but here has type 'Require'.

Svar #1

Det er sandt. Det, jeg måtte gøre, var simpelthen at bruge declare var require:any og ikke referere til nodejs eller RequireJS.

Ville sætte pris på, hvis du kan åbne en fejl her: https://github.com/borisyankov/DefinitelyTyped

Årsagen til, at det er tricky, er, fordi du faktisk ikke har både node og RequireJS i det samme miljø. Det er en genbrug på kompileringstidspunktet, vi skal understøtte.

Svar #2

Jeg havde dette problem, mens jeg forsøgte at integrere monaco-editor i min applikation. Løsningen er ret simpel.

  1. Indsæt denne linje <script>window.requirejs=window.require;</script> efter at have inkluderet require.js eller loader.js i dit html.

  2. Så i din .ts-fil, hvor du vil bruge requirejs, skal du erstatte alle require med requirejs. Dette alias er allerede defineret i require.d.ts

  3. Færdig!

Relaterede artikler