J'utilise create-react-app
et j'ai du mal à charger les images. Je suis les instructions comme spécifié ici , mais je continue à voir l'erreur suivante:
Failed to compile.
Error in ./src/components/Home/imageIndex.ts
(1,24): error TS2307: Cannot find module './party.png'
Quelqu'un sait-il pourquoi, lorsque j'exécute yarn start
, la compilation de mon application échoue?
J'ai un composant Home
et voici comment j'importe le fichier:
import photo from './party.png';
Le composant se trouve dans src/components/Home/index.tsx
et le fichier png dans src/components/Home/party.png
.
voici mon package.json:
{
"name": "eai-reactjs-TypeScript-redux-starter",
"description": "A ReactJS/TypeScript + Redux starter template with a detailed README describing how to use these technologies together and constructive code comments.",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^15.6.1",
"react-dom": "^15.6.1",
"react-redux": "^5.0.5",
"redux": "^3.7.0",
"redux-logger": "^3.0.6"
},
"devDependencies": {
"@types/enzyme": "^2.8.0",
"@types/jest": "^19.2.3",
"@types/node": "^7.0.18",
"@types/react": "^15.0.24",
"@types/react-dom": "^15.5.0",
"@types/react-redux": "^4.4.40",
"@types/redux-logger": "^3.0.0",
"enzyme": "^2.8.2",
"react-addons-test-utils": "^15.5.1",
"react-scripts-ts": "1.4.0",
"redux-devtools-extension": "^2.13.2"
},
"scripts": {
"start": "react-scripts-ts start",
"build": "react-scripts-ts build",
"test": "react-scripts-ts test --env=jsdom",
"eject": "react-scripts-ts eject"
}
}
Êtes-vous sûr d'avoir le bon chemin? De même, lorsque vous importez une image via css (comme dans l'exemple que vous avez mentionné), vous devez donner un chemin relatif au dossier public et non au dossier src. J'ai rencontré ce problème plusieurs fois.
Un exemple utilisant import:
import Image from './img.png'
...
// react example
...
render() {
return (
<img src={Image}/> // notice the curly
...
et pas
<img src="Image"/>
Comme @ archae0pteryx a proposé de séparer les images du code, il est préférable d'utiliser le dossier public au lieu de src .
Voici comment cela fonctionne avec css :
background-image: url('/img.bmp');
Par défaut, Create-React-App
utilise url-loader
pour les fichiers de taille 10000 octets.
cela fonctionne très bien dans l'environnement de développement, mais en production, réduit les erreurs.
Pour un environnement de production, vous devez modifier la valeur pour la limite d'octets afin d'appliquer Webpack à l'aide du chargeur de fichiers.
Si vous devez éjecter votre fichier de modification d'application webpack.config.prod.js
et modifier la limite de url-loader
en 10
, elle fonctionnera également.
{
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
loader: require.resolve('url-loader'),
options: {
limit: 10,
name: 'static/media/[name].[hash:8].[ext]',
},