Yo estaba en webpack Versión 5.40.0
En uno de mis scripts, uso el nombre de la variable calculada para prometer con async/await/import... en un controlador de estímulo
Estaba funcionando bien. Hoy, cuando actualizo mi dependencia y agrego webpack a la última versión: 5.52.1, la compilación falla con un error en el primer [en esta línea: this.['module' + datagridshortName[i]]
'Error de sintaxis: Token inesperado' en el corchete.
Entonces, ¿cómo usar la variable de nombre computado en webpack encore ahora?
Acabo de volver a webpack 5.40 y el código funciona.
Gracias por tus explicaciones/ayuda :)
Mi código :
async createDatagridSource(){ let datagridScName = []; let datagridshortName = []; Object.entries(this.datagrid).forEach(entry => { const [key, value] = entry; datagridScName.push(value.controllerNameSc); datagridshortName.push(value.shortName); }); for (let i = 0; i < datagridshortName.length; i++) { this.['module' + datagridshortName[i]] = await import('../js/datagrid_config/' + datagridScName[i] + '_config'); this.module=this.['module' + datagridshortName[i]]; this.datafields=this.module.datafields(); this.columns=this.module.columns(); this.columngroups=this.module.columngroups(); this.config=this.module.config(); //source des données initiales this.['source' + datagridshortName[i]] ={ datafields:this.datafields, data: { "viewArchives" : this.viewArchives,...this.sourceOtherdata(datagridshortName[i])}, url: this.datagrid[datagridshortName[i]].urlInit, //******************************** id: 'data', type: "POST", datatype: "json", root: 'data', } //adaptater de la source this.['dataAdapter' + datagridshortName[i]] = new $.jqx.dataAdapter(this.['source' + datagridshortName[i]]); } //renvoi l'identifiant du premier datagrid return datagridshortName[0]; }Paquete.json
"devDependencies": { "@symfony/webpack-encore": "^1.5.0", "autoprefixer": "^10.2.6", "core-js": "^3.15.1", "file-loader": "^6.2.0", "postcss": "^8.3.5", "postcss-loader": "^5.3.0", "precss": "^4.0.0", "regenerator-runtime": "^0.13.7", "sass": "^1.35.1", "sass-loader": " ^12.1.0", "webpack": "5.52.1", "webpack-notifier": "^1.13.0"},
Así que fue solo un error tipográfico:
this.['módulo' + datagridshortName[i]] => this['módulo' + datagridshortName[i]]
Simplemente elimine el . y esta bien.
Explicación (gracias Lyzard kyng)