1
votes

Comment accéder à un tableau stocké dans un autre fichier js

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"
    ]
  ]
}


2 commentaires

Il semble que vous n'ayez jamais déclaré la variable harryText dans harryText.js . Vous venez de commencer à l'utiliser sans dire d'abord const ou let .


Même après avoir inclus const ou let dans harryText.js, il est toujours indiqué ReferenceError: harryText n'est pas défini


3 Réponses :


1
votes

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"
    ]
  ]
}


2 commentaires

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.



1
votes

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 


1 commentaires

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.



0
votes

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
  ]
}


0 commentaires