scripts react props create app react-native flowtype

react-native - props - react native prettier



Flujo que dice "Módulo requerido no encontrado" para las fuentes de<Imagen> (3)

No tengo una respuesta real, además de decir que el flujo en React Native parece realmente dudoso hoy y no me sorprendería si el flujo simplemente no admite este uso en absoluto, ¡pero me encantaría estar totalmente sorprendido!

Personalmente, como solución alternativa, solo agregaría un componente de nivel superior e ignoraría los errores de flujo en ese archivo.

// Picture.js // (No @flow tag at top of file) const Picture = ({ source }) => ( <Image source={require(source)} /> )

Luego, use <Picture source="my/path/pic.jpg" /> .

Tenemos un proyecto React Native existente (versión 0.22.2) y estoy tratando de configurar el comprobador de tipo de flujo (versión 0.23) en ciertos archivos. Sin embargo, Flow genera muchos errores para las llamadas a require() que estamos usando para las fuentes de <Image> . Por ejemplo, tenemos este código en uno de nuestros componentes en Header.js:

<Image source={require(''./images/nav.png'')} style={styles.navIcon} />

Que React Native maneja bien y funciona. Sin embargo, Flow parece tratar de tratar el require() como un módulo regular requiere y no lo encuentra, y da errores como este:

Header.js:30 30: <Image source={require(''./images/nav.png'')} style={styles.navIcon} /> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ./images/nav.png. Required module not found

¿Cómo puedo decirle a Flow que deje de dar estos errores? He intentado agregar .*/images/.* a la sección [ignore] de mi .flowconfig , pero eso no cambia nada.


Puede usar la opción module.name_mapper.extension en .flowconfig. Por ejemplo,

[options] module.name_mapper.extension= ''png'' -> ''<PROJECT_ROOT>/ImageSourceStub.js.flow''

que asignará cualquier nombre de módulo que termine en .png a un módulo ImageSourceStub , como si en lugar de escribir require(''./foo.png'') hubiera escrito require(''./path/to/root/ImageSourceStub'') .

En ImageSourceStub.js.flow puedes hacer

const stub = { uri: ''stub.png'' }; export default stub; // or module.exports = stub;

para que Flow sepa que require(''*.png'') devuelve a {uri: string} .

Ver también los documentos de Configuración avanzada .


Tenía el mismo problema, para los archivos JPG, resuelto con este .flowconfig

module.name_mapper=''^image![a-zA-Z0-9$_-]+$'' -> ''GlobalImageStub'' module.name_mapper=''^[./a-zA-Z0-9$_-]+/.png$'' -> ''RelativeImageStub'' module.name_mapper=''^[./a-zA-Z0-9$_-]+/.jpg$'' -> ''RelativeImageStub''