[Bug]: test-utils default export is not createWrapper in native ES modules
Los mantenedores suelen responder en 2 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- node.js, typescript
- Área
- tooling
Línea de trabajo
Empieza por src/converter/generate-component-finders.ts y revisa cómo defaultExport genera los selectores y los puntos de entrada de las utilidades de prueba del DOM. Comprueba la salida generada para ambos puntos de entrada y confirma que Node ESM puede importar la función con nombre createWrapper, mientras que la exportación predeterminada existente sigue funcionando. La tarea está terminada cuando ambas importaciones se comporten como se describe en el issue.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Browser
No response
Package version
@cloudscape-design/components 3.0.1410 (latest), Node.js 24
React version
No response
Description
Summary
In a native ES module, import createWrapper from "@cloudscape-design/components/test-utils/selectors" does not give you the createWrapper function. Calling it throws TypeError: createWrapper is not a function. The same applies to test-utils/dom.
Steps to reproduce
-
Create a project with
"type": "module"inpackage.json, and install@cloudscape-design/components. -
Add
test.js:import createWrapper from "@cloudscape-design/components/test-utils/selectors"; console.log(typeof createWrapper); // "object" createWrapper(); // TypeError: createWrapper is not a function -
Run
node test.js.
Actual result
createWrapper is an object, not a function. The function is at createWrapper.default, so ESM code has to write:
import selectors from "@cloudscape-design/components/test-utils/selectors";
const { default: createWrapper } = selectors;
Expected result
ESM code can import the function directly:
import { createWrapper } from "@cloudscape-design/components/test-utils/selectors";
Cause
test-utils/selectors/index.js and test-utils/dom/index.js are CommonJS, and their only export of the function is exports.default = wrapper. When an ES module imports a CommonJS file, Node gives the default import the whole module.exports object. It does not use exports.default. So the default import is the object that holds every wrapper class, and the function is one property on it.
TypeScript does not always catch this. With "moduleResolution": "bundler", the default import type-checks as the function and fails only at run time. With "moduleResolution": "nodenext", TypeScript matches Node and reports the error.
Proposed fix
In src/converter/generate-component-finders.ts, add a named export after both wrapper functions in defaultExport:
export { wrapper as createWrapper };
tsc compiles this to exports.createWrapper = wrapper. Node detects that as a named export, so import { createWrapper } works in ESM. The default export does not change, so existing code keeps working.
Related
Source code
No response
Reproduction
No response
Code of Conduct
- I agree to follow this project's Code of Conduct
- I checked the current issues for duplicate problems
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.7k
- Forks
- 248
- Merge medio
- 2 d 4 h
- PR fusionados (30 d)
- 93
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de cloudscape-design/components
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
cloudscape-design/components#5244 ·
Los mantenedores suelen responder en 2 días
-
[Bug]: Circular app layout navigation and help icons are shifted upward in the official demoAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
cloudscape-design/components#5184 · 2 comentarios ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
cloudscape-design/components#5152 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Select accepts selection after becoming disabled while openPosiblemente ocupada @Xapollon430 la tomó hace 3 días. Abierto
Dificultad 3/5 Medio día Aptitud para principiantes 25/100
cloudscape-design/components#5231 ·
Los mantenedores suelen responder en 2 días
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
cloudscape-design/components#5149 · 1 comentario ·
Los mantenedores suelen responder en 2 días
Todos los issues de cloudscape-design/components
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
transitmatters/shutdown-tracker#155 ·
Los mantenedores suelen responder en 2 días
-
Popping out a single panel leaves its always render overlay in the main window, blocking clicksAbiertobug triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
"Claude Code request is missing its initial user message" when the prompt starts with an image pathAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
earendil-works/pi-claude-code#31 ·
Los mantenedores suelen responder en 8 días
-
bug pending triage
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
privatenumber/cleye#48 ·