J'essaie de créer ma propre application lorem ipsum et je souhaite garder mon code propre en stockant ma banque de mots dans d'autres fichiers. Comment puis-je accéder à un tableau stocké dans un autre fichier JS? Par exemple, au lieu de coder en dur harry = ["", "", ""]
, je souhaite stocker ces données dans un autre fichier et simplement appeler ce fichier dans le tableau.
function GenerateNewText(){ this.sentences = [ harryText, <---- error here ron = [ "I am a Weasley", "Gryffindor", "Quidditch keeper" ] ] }
3 Réponses :
Les fichiers Javascript sont isolés les uns des autres. Pour partager du code commun, vous avez toujours besoin de require
et module.exports
Vous faites donc ce qu'il faut avec module.exports = harryText
Vous devez ensuite exiger
ce fichier dans generator.js
const harryText = require("./harryText"); function GenerateNewText(){ this.sentences = [ harryText, ron = [ "I am a Weasley", "Gryffindor", "Quidditch keeper" ] ] }
Salut, je l'ai exigé dans le générateur.js mais cela montre toujours que harryText n'est pas défini.
Peu importe, je comprends ce que tu veux dire maintenant. J'avais un const loremIpsum = new GenerateNewText ()
que je n'ai pas inclus dans mon OP et donc quand j'ai vu votre réponse, j'ai inclus par erreur const harryText = require ("./ harryText")
comme votre exemple mais sous mon const loremIpsum
, au lieu de le dessus. Alors involontairement, j'ai créé un problème de portée. Quoi qu'il en soit, votre réponse aide. Merci pour ça.
Si vous utilisez ES6, vous pouvez faire ce qui suit.
//file1.js export const harryText = [ "I am the chosen one", "I am a Gryffindor", "I am a boy" ] //file2.js import {harryText} from './file1.js'; // use variable here
Si vous exécutez ce code directement dans le navigateur, cela ne fonctionnera pas. Vous avez besoin de Babel pour le transpiler. Si la configuration de votre environnement ne prend pas en charge es6, cela ne fonctionnera pas.
MISE À JOUR 20/02/19 16:15
J'obtenais l'erreur harryText n'est pas définie parce que j'ai continué à définir bêtement la variable au mauvais endroit! Je l'ai d'abord défini en dehors de la fonction GenerateNewText
, puis j'ai essayé de le définir dans le this.sentence
. Au lieu de cela, j'aurais dû le définir dans la function GenerateNewText
et en dehors de this.sentence
, comme ça
function GenerateNewText(){ const harryText = require("./harryText"); const ronText = require("./ronText"); this.sentences = [ harryText, ronText ] }
Il semble que vous n'ayez jamais déclaré la variable
harryText
dansharryText.js
. Vous venez de commencer à l'utiliser sans dire d'abordconst
oulet
.Même après avoir inclus const ou let dans harryText.js, il est toujours indiqué ReferenceError: harryText n'est pas défini