2017-08-02 1 views
6

Ich habe @ types/react-dom zusammen mit typescript und @ types/react und @ types/meteor installiert, aber wenn ich versuche, den Typchecker über die Befehlszeile auszuführen, erhalte ich den folgenden Fehler:Fehler bei Knoten_Module/@ types/reed-dom/.... Nachfolgende Variablendeklarationen müssen den gleichen Typ haben. Variable 'a'

Sie können reproduzieren Sie den Fehler und sehen Sie alle meine Konfiguration hier: https://github.com/Falieson/react15-meteor1.5

Vielen Dank für Ihre Hilfe!

$ meteor npm run type:client 

> [email protected] type:client /Users/sjcfmett/Private/ReactMeteorExample 
> tslint -p ./tsconfig.json --type-check './client/**/*.{ts,tsx}' 

Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3422:13: Subsequent variable declarations must have the same type. Variable 'a' must be of type 'DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>', but here has type 'DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3423:13: Subsequent variable declarations must have the same type. Variable 'abbr' must be of type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>', but here has type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3424:13: Subsequent variable declarations must have the same type. Variable 'address' must be of type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>', but here has type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3425:13: Subsequent variable declarations must have the same type. Variable 'area' must be of type 'DetailedHTMLProps<AreaHTMLAttributes<HTMLAreaElement>, HTMLAreaElement>', but here has type 'DetailedHTMLProps<AreaHTMLAttributes<HTMLAreaElement>, HTMLAreaElement>'. 
... (shortened) 

package.json (Referenz)

{ 
    "name": "react-meteor-example", 
    "version": "0.1.0", 
    "private": true, 
    "scripts": { 
    "start": "meteor run", 
    "lint:client": "tslint --fix -c ./tslint.json -p ./tsconfig.json './client/**/*.{ts,tsx}'", 
    "lint:imports": "tslint --fix -c ./tslint.json -p ./tsconfig.json './imports/**/*.{ts,tsx}'", 
    "lint:server": "tslint --fix -c ./tslint.json -p ./tsconfig.json './server/**/*.ts'", 
    "lint": "npm run lint:client && npm run lint:server && npm run lint:imports", 
    "type:imports": "tslint -p ./tsconfig.json --type-check './imports/**/*.{ts,tsx}'", 
    "type:client": "tslint -p ./tsconfig.json --type-check './client/**/*.{ts,tsx}'", 
    "type:server": "tslint -p ./tsconfig.json --type-check './server/**/*.ts'", 
    "type": "npm run type:client && npm run type:server && npm run type:imports", 
    "precommit": "npm run lint && npm run type" 
    }, 
    "dependencies": { 
    "babel-runtime": "^6.20.0", 
    "meteor-node-stubs": "~0.2.4", 
    "react": "^15.6.1", 
    "react-dom": "^15.6.1" 
    }, 
    "devDependencies": { 
    "@types/meteor": "^1.4.2", 
    "@types/react": "^15.6.0", 
    "@types/react-dom": "^15.5.1", 
    "babel-preset-react": "^6.24.1", 
    "babel-preset-stage-1": "^6.24.1", 
    "husky": "^0.14.3", 
    "tslint": "^5.5.0", 
    "tslint-react": "^3.1.0", 
    "typescript": "^2.4.2" 
    } 
} 

Antwort

4

Die Typen 16 beta Reagieren wurden als die 'neuesten' React Arten veröffentlicht.

Die neue Version entfernt die Definitionen für die Teile von React, die in React 16 (wie React.DOM) entfernt wurden, was erwartet wird.

Leider wurde die Veröffentlichung dieser Typen für die React 16 Beta zum @latest (default) Tag in npm statt @next gemacht (wie React tat).

Ich habe eine offene Frage (# 18708) mit DefinitelyTyped hier: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18708

Sie können gezielt versuchen, eine bestimmte Version (npm install --save @types/[email protected]), aber die Abhängigkeiten in @ Typen Targeting/reagieren-dom für @ types/reagieren wird auf "*", was dazu führt, dass @ types/react @ latest immer noch heruntergeladen wird, was dazu führt, dass Sie mehrere Versionen an verschiedenen Stellen in Ihrem node_modules-Verzeichnis haben.

Wir müssen einige manuelle Arbeit tun, um dies zu klären. Hoffentlich werden die Leute, die @ types/react halten, das bald beheben.

0

ich Garn benutze und diese fixiert rm -rf node_modules && rm yarn.lock && yarn install

+0

Gerade läuft so, dass die Leute wissen, - wenn Sie auf Garn als Paket-Manager angewiesen sind, dann wird dieser Befehl die ganze Zweck der 'yarn' Zerschlagung. Obwohl es definitiv das Problem behebt :) Auf der anderen Seite könnten Sie stattdessen 'npm install' ausführen – Dethariel

Verwandte Themen