2017-10-11 16 views
0

J'ai un projet initialisé avec Create-React-App.Créer-Réagir-App: Uncaught Erreur: Impossible de trouver le module "./locale"

Tout fonctionne un OK si je ...

npm run start et vue sur http://localhost:3000

ou

npm run build && serve -s build et vue sur http://localhost:5000

Cependant après avoir à déployer un seau à s3 avec ...

npm run build && aws s3 sync build/ s3://${DEPLOYMENT_BUCKET}

... Je vais à l'url s3 et obtenir un écran vide avec cette erreur dans la console:

Uncaught Error: Cannot find module "./locale"

Je pense qu'il pourrait être quelque chose à voir avec moment.js - bien que ce n'est pas une dépendance J'ai ajouté.

En regardant dans mes node_modules je peux voir l'moment.js est à la version 2.18.1, que je pense que les règles sur this answer

Je ne suis pas sûr de savoir comment déboguer ce problème, de sorte que toute aide appréciée.

Ne sait pas si cela peut aider, mais mon package.json actuel est comme ci-dessous.

{ 
    "name": "my_app", 
    "version": "1.0.0", 
    "private": true, 
    "dependencies": { 
    "amazon-cognito-identity-js": "^1.19.0", 
    "antd": "^2.13.4", 
    "axios": "^0.16.2", 
    "react": "^15.6.1", 
    "react-dom": "^15.6.1", 
    "react-router-dom": "^4.2.2", 
    "react-scripts": "1.0.13", 
    "recompose": "^0.25.1" 
    }, 
    "scripts": { 
    "start": "react-scripts start", 
    "build": "react-scripts build", 
    "test": "react-scripts test --env=jsdom", 
    "eject": "react-scripts eject" 
    } 
} 
+0

Avez-vous essayé d'ajouter momentJS en tant que dépendance explicite, pour voir si cela résout votre problème? Quant à savoir pourquoi il est utilisé et est manquant, il pourrait avoir à faire avec votre processus de construction, qui n'est pas détaillé dans votre question. Il pourrait être utilisé comme une dépendance par l'un des paquets que vous utilisez, et ensuite laissé de côté pendant votre compilation. – Jaxx

+0

Comment ennuyeux - oui ajoutant le moment comme une dépendance a fixé - Cheers @jaxx – Luke

+0

La réponse que j'ai donné n'a pas aidé du tout? J'espérais, pour votre bien, que vous n'ayez pas à ajouter cette dépendance après avoir commenté cette ligne dans la configuration de production. – Jaxx

Répondre

0

Après avoir examiné la façon dont réagissent-scripts gère la construction du projet, j'ai trouvé cet extrait intéressant de code dans le fichier /react-scripts/config/webpack.config.prod.js qui vient avec créer une réaction-app (ce qui est le fichier de configuration Webpack pour la construction prod) .

// Moment.js is an extremely popular library that bundles large locale files 
// by default due to how Webpack interprets its code. This is a practical 
// solution that requires the user to opt into importing specific locales. 
// https://github.com/jmblog/how-to-optimize-momentjs-with-webpack 
// You can remove this if you don't use Moment.js: 
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), 

Vous voulez probablement soit des endroits spécifiques à l'importation, si vous utilisez, ce qui ne semble pas être le cas, ou commenter cette ligne autrement.