typescript - manager - webpack TS2304 No se puede encontrar el nombre ''Mapa'', ''Establecer'', ''Promesa''
https tag manager (12)
Como la respuesta directa al OP ya ha sido respondida, pensé que agregaría lo que me solucionó. Mi situación era ligeramente diferente, ya que no estaba usando WebPack y recibía estos errores al intentar usar tsc. La respuesta que todos los demás están dando (agregue "es6" a lib) no me la resolvió. El problema para mí fue que tenía la v9.11.1 de nodo instalada en mi máquina, pero había usado npm para tomar "@ types / node", que obtuvo la más reciente, v10 +. Una vez que desinstalé la escritura de ese nodo e instalé un archivo de escritura de nodo v9 específico, este problema se resolvió.
Tengo el siguiente webpack.config.js
var path = require("path");
var webpack = require(''webpack'');
module.exports = {
entry: {
''ng2-auto-complete'': path.join(__dirname, ''src'', ''index.ts'')
},
resolve: {
extensions: ['''', ''.ts'', ''.js'', ''.json'', ''.css'', ''.html'']
},
output: {
path: path.join(__dirname, ''dist''),
filename: "[name].umd.js",
library: ["[name]"],
libraryTarget: "umd"
},
externals: [
/^rxjs///, //.... any other way? rx.umd.min.js does work?
/^@angular///
],
devtool: ''source-map'',
module: {
loaders: [
{ // Support for .ts files.
test: //.ts$/,
loaders: [''ts'', ''angular2-template-loader''],
exclude: [/test/, /node_modules//(?!(ng2-.+))/]
}
]
}
};
y el siguiente tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"moduleResolution": "node",
"noEmitHelpers": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"pretty": true,
"allowUnreachableCode": true,
"allowUnusedLabels": true,
"noImplicitAny": false,
"noImplicitReturns": false,
"noImplicitUseStrict": false,
"noFallthroughCasesInSwitch": false,
"allowSyntheticDefaultImports": true,
"suppressExcessPropertyErrors": true,
"suppressImplicitAnyIndexErrors": true,
"outDir": "dist",
"baseUrl": "src"
},
"files": [
"src/index.ts"
],
"exclude": [
"node_modules"
],
"compileOnSave": false,
"buildOnSave": false
}
Cuando ejecuto el comando
tsc
la siguiente manera, todo funciona bien.
ng2-auto-complete (master)$ tsc --declaration
ng2-auto-complete (master)$
Cuando
webpack
comando
webpack
, muestra errores de compilación mecanografiada.
ng2-auto-complete (master)$ webpack
ts-loader: Using [email protected] and /Users/allen/github/ng2-auto-complete/tsconfig.json
Hash: bd6c50e4b9732c3ffa9d
Version: webpack 1.13.2
Time: 5041ms
Asset Size Chunks Chunk Names
ng2-auto-complete.umd.js 24.4 kB 0 [emitted] ng2-auto-complete
ng2-auto-complete.umd.js.map 28.4 kB 0 [emitted] ng2-auto-complete
+ 11 hidden modules
ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/dom/dom_renderer.d.ts
(18,37): error TS2304: Cannot find name ''Map''.
ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/dom/dom_adapter.d.ts
(96,42): error TS2304: Cannot find name ''Map''.
ERROR in /Users/allen/github/ng2-auto-complete/node_modules/@angular/platform-browser/src/web_workers/worker/location_providers.d.ts
(21,86): error TS2304: Cannot find name ''Promise''.
...
ng2-auto-complete (master)$
No sé lo que me falta para la compilación de paquete web y mecanografiado.
node_modules
ha sido excluido en
tsconfig.json
"excluir": ["nodo_módulos"],
y las definiciones de tipo están allí en
node_modules
"devDependencies": {
"@types/core-js": "^0.9.32",
"@types/node": "^6.0.31"
También intenté usar el directorio
typings.json
y typings sin éxito.
{
"globalDependencies": {
"core-js": "registry:dt/core-js#0.0.0+20160725163759",
"jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
"node": "registry:dt/node#6.0.0+20160815222444"
}
}
FYI, versiones
$ node --version
v5.7.1
$ npm --version
3.6.0
$ tsc --version
Version 2.0.0
¿Cómo me deshago de los errores
webpack
con el comando
webpack
?
En mi caso tuve que correr:
npm install typings -g typings install
Eso resolvió mi problema
En su tsconfig.json simplemente cambie "target": "es5" a "target": "es6"
Para resolver este error, cambie las siguientes propiedades en el archivo tsconfig.json.
"lib": [
"es2018",
"dom",
"es5",
"es6"
],
"module": "es2015",
"target": "es6"
Después de eso, ejecute el siguiente comando en la terminal.
npm install @types/es6-shim
ERROR RESUELTO.
Tuve que instalar los tipings core-js de npm para resolver el problema
npm install @types/core-js
explicación
:
El objetivo de los paquetes @types npm es obtener definiciones de tipo con npm.
El uso de estas definiciones de tipo es una característica de
TypeScript 2.0
.
Los @types reemplazan las herramientas actuales, como los tipos y tsd , aunque estos seguirán siendo compatibles durante algún tiempo.
para es6 usa esto
tsc filename.ts --lib es2015
https://.com/a/44800490/9690407
npm install typings -g typings install
está en desuso en npm 5.6.0!
En su lugar, use la
npm install @types/core-js
.
Map
,
Set
y
Promise
son características de
ES6
.
En su
tsconfig.json
está utilizando:
"target": "es5"
Esto hace que el compilador use el
es5
lib.d.ts
normal, que carece de las definiciones para los tipos anteriores.
Desea usar lib.es6.d.ts :
"target": "es6"
tsconfig.json
esto para trabajar en
tsconfig.json
, y parece funcionar sin ningún error.
"compilerOptions": {
"target": "es5",
"lib": ["es5", "es6", "dom"], <--- this
...
}
No estoy seguro de que
lib
sea para la función Typecript 2.0 o no, pero descubrí que hay varias bibliotecas disponibles
Del esquema de configuración del mecanografiado (tenga en cuenta la colección es2015.)
"lib": {
"description": "Specify library file to be included in the compilation. Requires TypeScript version 2.0 or later.",
"type": "array",
"items": {
"type": "string",
"enum": [ "es5", "es6", "es2015", "es7", "es2016", "es2017", "dom", "webworker", "scripthost", "es2015.core", "es2015.collection", "es2015.generator", "es2015.iterable",
"es2015.promise", "es2015.proxy", "es2015.reflect", "es2015.symbol", "es2015.symbol.wellknown", "es2016.array.include", "es2017.object", "es2017.sharedmemory" ]
}
}
Esto resuelve los errores de compilación, pero todavía me pregunto por qué el comando
tsc
funciona sin errores, pero
webpack
no.
tsc
busca todas las bibliotecas posibles sin usar
lib
por
tsconfig.json
?
Si se pregunta por qué ninguna de estas soluciones funciona para usted, tenga en cuenta: si especifica el archivo para compilar en la línea de comando o package.json tsc NO leerá su archivo tsconfig.json y, por lo tanto, no tendrá ningún efecto. En su lugar, especifique los "archivos" y "outDir" en su tsconfig.json y una de las soluciones "lib" probablemente funcionará para usted. Luego compila solo con:
tsc --sourcemaps
Solo agrega:
"lib": ["es6"] // means at least ES6
No cambies el objetivo.
Target se usa para indicar a Typecript en qué versión de ECMAScript compilar sus archivos
.ts
.
Por supuesto, puede cambiarlo, si el navegador en el que se ejecutará su aplicación admitirá esa versión de ECMAScript.
Por ejemplo, uso
"target": "es5"
y
"lib": ["es6"]
.
Otra razón podría ser:
Que su archivo
.ts
no está en
"rootDir": "./YourFolder",
tsc index.ts --lib "es6"
Si agregar lib no funciona en tsconfig.json, use la opción de línea de comando anterior