typescript - example - Mensaje de error mecanografiado confuso de "identificador duplicado"
typescript version (16)
Acabo de encontrarme con este problema.
Cuando ejecuté
npm start
, obtuve un montón de errores de identificador duplicados.
SOLUCIÓN:
Desde la carpeta raíz del proyecto, ejecute:
rm -r typings
typings install
npm start
Y todo funciona bien.
¿Por qué recibo este y muchos más errores de este tipo? Estoy agregando un enlace al repositorio, así como fragmentos de código clave a continuación. Creo que tengo un malentendido básico sobre cómo funciona la dependencia y el encadenamiento "incluido".
csvproc(master)> tsc
node_modules/typescript/bin/lib.core.d.ts(83,5): error TS2300: Duplicate identifier ''configurable''.
node_modules/typescript/bin/lib.core.d.ts(84,5): error TS2300: Duplicate identifier ''enumerable''.
node_modules/typescript/bin/lib.core.d.ts(85,5): error TS2300: Duplicate identifier ''value''.
node_modules/typescript/bin/lib.core.d.ts(86,5): error TS2300: Duplicate identifier ''writable''.
Todo el código se puede encontrar aquí .
Mi tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": false,
"outDir": "built/",
"sourceMap": true,
"target": "es5"
}
}
Mi tsd.json:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
Mis tsd.d.ts:
{
"version": "v4",
"repo": "borisyankov/DefinitelyTyped",
"ref": "master",
"path": "typings",
"bundle": "typings/tsd.d.ts",
"installed": {
"node/node-0.10.d.ts": {
"commit": "6387999eb899d0ba02d37dd8697647718caca230"
},
"should/should.d.ts": {
"commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
}
}
}
Al usar
webpack
, encontré el mismo error, solo en caso de que excluir el archivo
.d.ts
en su
tsconfig.json
y node_modules resolvió mi problema:
"exclude": [
"node_modules",
"typings/main",
"typings/main.d.ts",
"typings/index.d.ts"
]
El problema se resolvió simplemente:
-
Eliminar la carpeta
node_modules
-
Ejecutando
npm install
para obtener todos los paquetes con las versiones correctas
En mi caso, el problema ocurrió después de cambiar las ramas de Git, donde una nueva rama estaba usando un conjunto diferente de módulos de nodo. La rama anterior estaba usando TypeScript v1.8, la nueva v2.0
Eliminamos una carpeta lib de la carpeta del sitio web. Esto fue creado por una instalación previa de tipings. Esto se convirtió en duplicado. Cuando esto se eliminó, ¡funcionó!
En mi caso recibí el error como
node_modules/@types/es6-promise/index.d.ts (11,15): error TS2300: Identificador duplicado ''Promesa''.
Y tenía
@types/es6-promise
en mi package.json pero mi
tsconfig
ya estaba con
target: "es6"
.
Así que supongo que hubo un conflicto con
Promise
al compilar.
La eliminación de
@types/es6-promise
de mi archivo
package.json
resolvió el problema.
Esto se debe a la combinación de dos cosas:
-
tsconfig
no tiene ninguna sección defiles
. De http://www.typescriptlang.org/docs/handbook/tsconfig-json.html
Si no hay una propiedad "archivos" en un tsconfig.json, el compilador por defecto incluye todos los archivos en el directorio y subdirectorios que lo contienen. Cuando se especifica una propiedad "archivos", solo se incluyen esos archivos.
-
Incluyendo el
typescript
como una dependencia npm:node_modules/typescript/
Esto significa que todo eltypescript
se incluye ... de todos modos, hay unlib.d.ts
incluido implícitamente en su proyecto ( http://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html ) y está en conflicto con el que se incluye con la versión NPM de mecanografiado.
Reparar
Enumere
files
o
include
explícitamente
https://basarat.gitbooks.io/typescript/docs/project/files.html
🌹
Me encontré con un problema similar. Simplemente mover mi tsconfig.json desde la raíz de mi proyecto a un alcance diferente ayudó. En mi proyecto, moví tsconfig.json desde la raíz hasta wwwroot.
Puede deberse a tener tanto la tipificación como la dependencia en su carpeta de nodo. así que primero verifique lo que tiene en su carpeta @types y si los tiene en dependencias, elimine el duplicado. para mí fue core.js
Si ha instalado tipings por separado en la carpeta de tipings
{
"exclude": [
"node_modules",
"typings"
]
}
También puede usar la opción de exclusión en el archivo tsconfig.json de la siguiente manera:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true
},
"exclude": [
"node_modules"
]
}
Tuve este error, junto con otros, después de cambiar mi tsconfig.json a target: "es2015" y módulo: "es2015".
La base (inicio rápido de AngularJS2) usó
/// <reference path="../../typings/index.d.ts" />
en el archivo main.ts.
Para resolver esto, tuve que eliminar esa línea.
Tuve este problema causado por tener una carpeta inesperada en el disco (
jspm_packages
, ya no se usa) que no fue rastreado por el control de origen (y oculto de mi IDE).
Esto tenía una instalación duplicada de TypeScript, lo que causó los problemas.
Es un caso marginal, pero deja una respuesta aquí en caso de que alguien más esté buscando esta solución.
Tuve este problema y resultó que tenía una segunda carpeta node_modules en mi proyecto que no debía estar allí :-(
ejecutar el siguiente comando solucionará este problema.
npm install @types/node --save-dev
elimine este @ types / express-validator del archivo package.json, luego ejecute npm install
Mensaje del autor: Este paquete ha quedado en desuso. Esta es una definición de tipos de código auxiliar para express-validator ( https://github.com/ctavan/express-validator ). ¡express-validator proporciona sus propias definiciones de tipo, por lo que no necesita tener instalado @ types / express-validator!
Actualización : la versión 1.0 de Typings cambió la estructura de salida y la respuesta a continuación se refiere a la versión anterior a la 1.0.
Si está utilizando Typings y excluye en su tsconfig.json, puede encontrarse con el problema de los tipos duplicados y necesitar algo como lo siguiente:
{
"exclude": [
"typings/browser.d.ts",
"typings/browser",
"node_modules"
]
}
Para simplificar la integración con TypeScript, se generan dos archivos (typings / main.d.ts y typings / browser.d.ts) que hacen referencia a todos los tipos instalados en el proyecto, solo uno de los cuales se puede utilizar a la vez.
Por lo tanto, dependiendo de la versión que necesite, debe excluir (o incluir) los archivos de tipo "navegador" o "principal", pero no ambos, ya que de aquí provienen los duplicados.
Este problema de Typings lo discute más.