Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
CRA + Inversify @inject Error de análisis del módulo: carácter inesperado '@'

este es el error que me sale

./src/core/providers/todoApi/TodoApiProvider.ts 10:14 Error al analizar el módulo: carácter inesperado '@' (10:14) El archivo se procesó con estos cargadores:

  • ./node_modules/react-scripts/node_modules/@pmmmwh/react-refresh-webpack-plugin/loader/index.js
  • ./node_modules/babel-loader/lib/index.js Es posible que necesite un cargador adicional para manejar el resultado de estos cargadores. | clase TodoApiProvider {

constructor(@inyectar(TIPOS.HttpClient) | httpClient) { | this.httpClient = vacío 0;

TodoApiProvider.ts

 class DefaultTodoApiProvider implements TodoApiProvider { private httpClient: HttpClient; // @inject(TYPES.HttpClient) return error constructor(@inject(TYPES.HttpClient) httpClient: HttpClient) { this.httpClient = Dependency.get(TYPES.HttpClient); } async getTodoById(id: string) { const data = await this.httpClient.get( `https://jsonplaceholder.typicode.com/todos/${id}` ); return data; } } decorate(injectable(), TodoApiProvider); export default DefaultTodoApiProvider;

Si pongo @inject(TYPES.HttpClient) encima private httpClient: HttpClient; obtendrá otro error Cannot access 'TYPES' before initialization .

.babelrc

 { "presets": [ ..., "@babel/preset-typescript" ], "plugins": [ ..., "babel-plugin-transform-typescript-metadata", ["@babel/plugin-proposal-decorators", { "legacy": true }], ["@babel/plugin-proposal-class-properties", { "loose": true }] ], "env": { "test": { "plugins": [ "transform-require-context", "babel-plugin-transform-typescript-metadata", "babel-plugin-parameter-decorator" ] } } }

tsconfig.js

 { "compilerOptions": { ..., "emitDecoratorMetadata": false, }, }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Las propuestas de decorador de la etapa 1 y la etapa 2 no admiten decoradores de parámetros. Los @babel/plugin-proposal-decorators que implementan las propuestas no saben cómo manejar los decoradores de parámetros. Como resultado, se produjo el mensaje de error Unexpected character '@' . Solo Typescript es consciente de los decoradores de parámetros .

Uso Next.js no CRA pero creo que es el mismo problema. Para Next.js, resolví este problema instalando ts-loader y configurando la configuración del paquete web de Next.js para usar ts-loader antes que babel-loader.

El fragmento a continuación es específico de Next.js. Lo menciono para aclarar mi punto.

 config.module.rules.forEach((rule) => { if (rule.test instanceof RegExp && rule.test.test(".ts")) { if (Array.isArray(rule.use)) { rule.use.push("ts-loader"); } else { rule.use = [rule.use, "ts-loader"]; } } });

Acerca de acceder a TIPOS antes de la inicialización, no investigué por qué sucede, ya que se resuelve usando ts-loader también al solucionar el primer problema.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda