Estoy tratando de compilar a través de, tsc
que he instalado globalmente, y obtengo un error:
~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6 - error TS2300: Duplicate identifier 'IteratorResult'.
41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
~~~~~~~~~~~~~~
node_modules/@types/node/index.d.ts:170:11
170 interface IteratorResult<T> { }
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
node_modules/@types/node/index.d.ts:170:11 - error TS2300: Duplicate identifier 'IteratorResult'.
170 interface IteratorResult<T> { }
~~~~~~~~~~~~~~
~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6
41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
~~~~~~~~~~~~~~
'IteratorResult' was also declared here.
Found 2 errors.
Tengo @types/node
instalada la versión 10.1.0. ( @latest
tiene sus propios problemas ...)
tsconfig.json
{
"compilerOptions": {
"target": "es2018",
"moduleResolution": "node",
"module": "commonjs",
"jsx": "react",
"lib": [
"dom",
"es2018",
"dom.iterable",
"scripthost"
],
"typeRoots": [
"./node_modules/@types",
"./types"
],
"types": [],
"alwaysStrict": true,
"strictNullChecks": true,
"noImplicitAny": true,
"noImplicitReturns": true,
"noImplicitThis": true,
"noUnusedLocals": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"esModuleInterop": true,
"sourceMap": true,
"outDir": "dist"
},
"files": [
"app/index.tsx"
],
"include": [
"app/**/*.ts",
"app/**/*.tsx",
"test/**/*.ts",
"test/**/*.tsx",
"node_modules/@types/**/*.d.ts",
"./types/**/*.d.ts"
],
"exclude": [
"dist"
]
}
Si desinstalo typescript
globalmente y ejecuto npx tsc
, funciona, pero no debería haber nada de malo en instalar y ejecutar typescript
globalmente. Después de todo, ese es el objetivo de instalar cosas a nivel mundial.
Mientras tanto, tengo una solución alternativa que es simplemente alias tsc (estoy usando git bash en Windows).
alias tsc="path/to/project/node_modules/.bin/tsc.cmd"
typescript
types
import
dx_over_dt
fuente
fuente
Respuestas:
Encontré un problema en GitHub: https://github.com/microsoft/TypeScript/issues/32333 que estaba relacionado. @rbuckton sugirió actualizar
@types/node
. Funcionó para mí.fuente
npm install --save-dev @types/node
npm update --save-dev @types/node
es más correcto ya que bien puede ser una actualización de versión menor, vea instalar vs actualizarnpm install @types/node
instalaría la versión de tipos / nodo que ya tengo en mi package.json, así que lo hicenpm install @types/node@latest
y funcionó.node_modules
e instalarlos nuevamente para que funcionara, ¡pero ese fue el problema!Recibí el error is en mi aplicación angular 8 y no pude resolver el problema después de probar todas las sugerencias hechas aquí, incluida la respuesta aceptada. Tuve que mirar una aplicación angular 6 anterior que se compiló sin errores y me di cuenta de que podía omitir la verificación de la biblioteca al incluir
al archivo tsconfig.json. Con el hecho de que mi aplicación funciona bien sin problemas, decidí adoptar este enfoque. Aquí está la configuración completa de mi archivo tsconfig.json
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "downlevelIteration": true, "experimentalDecorators": true, "module": "esnext", "moduleResolution": "node", "importHelpers": true, "target": "es2015", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2018", "dom" ], "skipLibCheck": true }, "angularCompilerOptions": { "fullTemplateTypeCheck": true, "strictInjectionParameters": true } }
No hubo más errores después de esta configuración. Nota: Eso no significa que el problema esté resuelto, pero al menos me permitió omitir el error que estaba causando el error. Debido al hecho de que mi aplicación se está ejecutando como se esperaba, considero este error irrelevante en este momento.
fuente
Sospecho que se debe a que su sección de inclusión:
"include": [ "app/**/*.ts", "app/**/*.tsx", "test/**/*.ts", "test/**/*.tsx", "node_modules/@types/**/*.d.ts", "./types/**/*.d.ts" ]
Por lo general, no es necesario incluir explícitamente archivos * .d.ts. Y probablemente nunca archivos de declaración de otras bibliotecas (o tipos de nodos).
tsconfig
La sección "excluir" excluye todo lo que se encuentra debajo"node_modules"
de forma predeterminada (entre otras cosas). Cuando agrega"node_modules/@types/**/*.d.ts"
, anula esa exclusión y tsc intenta incluirlos, pero esos tipos ya están declarados.Verifique los documentos de TypeScript en tsconfig.json , explica las opciones de configuración "typeRoots" , "files" e "include" / "exclude" en detalle.
fuente
"files": [ "./node_modules/@types/node/index.d.ts" ],
que tomé de algún tutorial. ¡Tu respuesta ayudó!Para mí resultó que tenía una
node_modules
carpeta en un proyecto de directorio principal, algo similar a esto:Dado que
node_modules
tenía una versión anterior de@types/node
instalada, surgió el problema. Sin embargo, en mi caso, la solución no fue actualizar@types/node
sino eliminarlos,node_modules
ya que no los estaba usando en primer lugar.Si realmente necesita tener un
node_modules
directorio principal con diferentes tipos y así es como desea que sea, puede especificartypeRoots
específicamente:{ "compilerOptions": { "module": "esnext", "target": "es6", "declaration": true, "outDir": "./dist", "typeRoots": ["./node_modules/@types/"] }, "include": [ "src/**/*" ] }
De esa forma,
node_modules
no se escanean los tipos de los padres . De lo contrario, lo son, lea aquí: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-typesfuente
Como dijo @Muhammad bin Yusrat en su comentario, ejecute
npm i @types/node@latest
(¡¡npm i @types/node
no funciona !!) si acaba de actualizar angular a 9. Eso funcionó para mí.También eliminó otro error de consola ionic 5 después de ejecutar
ionic serve
-> 'se negó a cargar la imagen' http: localhost: 8100 / favicon.ico 'porque viola la siguiente Política de seguridad de contenido .....' (ver más abajo).Otro error 'IteratorResult' fue causado por el error "Tipos de propagación". Consulte Mecanografiado: Los tipos de propagación solo se pueden crear a partir de tipos de objetos . Básicamente, en alguna parte de su código ha utilizado un operador de propagación como este
return { id: doc.payload.id, ...doc.payload.data() };
y debe cambiarlo a esto,return { id: doc.payload.id, ...doc.payload.data() as {} };
es decir, agregaras {}
fuente
npm install --save-dev @types/node@latest
solucionó el error "IteratorResult", ¡gracias!Simplemente actualice
@types/node
en devDependencies de su proyecto Angular:*** No cambies nada en
node_modules
***fuente
Añadir
"skipLibCheck": true
encompilerOptions
en tsconfig.json.Esto resolvió el problema. Chequea aquí
fuente
Encontré este hilo después de buscar en Google el error. Mi problema fue que de alguna manera tuve una importación innecesaria que causó esto:
import { error } from 'protractor';
fuente
Resolví este problema manualmente comentando una de las declaraciones de interfaz "IteratorResult" en el archivo node_modules/@types/node/index.d.ts. Espero que esto ayude.
fuente
Así es como lo resolví:
fuente