Con el siguiente código node.js:
import { fileURLToPath } from 'node:url'; import path from 'node:path'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(fileURLToPath(import.meta.url)); Veo el siguiente error de pelusa relacionado con la referencia import.meta.url :
Este fragmento es para replicar __filename y __dirname en ESM según la guía de node.js. Se da el mismo error cuando se usa import.meta.url de la siguiente manera... que también se encuentra en la guía oficial :
import { readFileSync } from 'fs'; const buffer = readFileSync(new URL('./data.proto', import.meta.url));He mirado esto pero no resuelve mi problema. Esto está específicamente dentro del IDE de Cloud9... no el AWS Cloud9 actual, sino un Cloud9 autohospedado basado en este repositorio (actualizado por última vez hace 4 años). La única guía de (AWS) Cloud9 está en esta página :
Puedo hacer que ciertas reglas básicas funcionen usando este archivo .eslintrc , por ejemplo
{ rules: { semi: ["error", "never"] } }Entonces sé que el archivo de configuración está surtiendo efecto en el IDE. Pero no puedo ver la regla apropiada para deshabilitar el error de "importación de token inesperada".
EDITAR: lo siguiente parece relevante, pero no puedo determinar si alguna vez realmente llegó a una conclusión:
https://github.com/eslint/eslint/issues/12518
Esta es en realidad una conjetura, ya que no estoy usando el IDE de Cloud9. Si se reconoce su archivo .eslintrc, lo que necesita agregar allí son las opciones de analizador adecuadas, por ejemplo:
{ "parserOptions": { "ecmaVersion": 2020, "sourceType": "module" }, "rules": { "semi": ["error", "never"] } } El motivo es que el analizador ESLint trata de forma predeterminada todas las fuentes de JavaScript como scripts ES5, mientras que la sintaxis import.meta solo se permite en módulos desde ECMAScript 2020.
Actualizar
La configuración "ecmaVersion": 2020 es compatible con ESLint 6 en adelante. Otra opción para que se reconozca import.meta es usar un analizador personalizado como Babel. Los paquetes a instalar para el analizador de Babel son @babel/core y @babel/eslint-parser . Y las configuraciones relevantes en .eslintrc están aquí:
{ "parser": "@babel/eslint-parser", "parserOptions": { "ecmaVersion": 2020, "requireConfigFile": false },Nota: No pude averiguar qué versiones de ESLint son compatibles con el analizador de Babel en la documentación de su repositorio (enlace anterior). Solo puedo ver en el código que ESLint 7 y 8 son compatibles. Si la versión actual de Babel no funciona con su versión de ESLint, es posible que deba intentar instalar versiones anteriores y ver si funcionan. Y en ese caso, es posible que se requiera un complemento adicional como syntax-import-meta .