Il n'y a toujours rien de intégré pour fournir la fonctionnalité exacte que vous décrivez. Cependant, une alternative à son utilisation require
pour utiliser la .load
commande dans le REPL, comme ceci:
.load foo.js
Il charge le fichier ligne par ligne comme si vous l'aviez tapé dans la REPL. Contrairement à require
cela, pollue l'historique REPL avec les commandes que vous avez chargées. Cependant, il a l'avantage d'être répétable car il n'est pas mis en cache comme require
.
Ce qui est le mieux pour vous dépendra de votre cas d'utilisation.
Edit: Il a une applicabilité limitée car il ne fonctionne pas en mode strict, mais trois ans plus tard, j'ai appris que si votre script ne l'a pas 'use strict'
, vous pouvez l' utiliser eval
pour charger votre script sans polluer l'historique REPL:
var fs = require('fs');
eval(fs.readFileSync('foo.js').toString())
j'utilise toujours cette commande
fonctionne exactement comme en Python sans aucun paquet.
la source
J'ai créé Vorpal.js , qui gère ce problème en transformant l'ajout de votre nœud en une CLI interactive. Il prend en charge une extension REPL, qui vous place dans une REPL dans le contexte de votre application en cours d'exécution.
Ensuite, vous pouvez exécuter l'application et elle tombera dans une REPL.
la source
Une autre façon est de définir ces fonctions comme globales.
Ensuite, préchargez le fichier dans le REPL comme:
Ensuite, la fonction
helloWorld
est accessible directement dans le REPL.la source
J'ai créé replpad car j'étais fatigué de recharger le script à plusieurs reprises.
Installez-le simplement via:
npm install -g replpad
Ensuite, utilisez-le en exécutant:
replpad
Si vous voulez qu'il surveille tous les fichiers dans le sous-répertoire courant et tous les sous-répertoires et les redirige vers le repl lorsqu'ils changent, faites:
replpad .
Regardez les vidéos sur le site pour avoir une meilleure idée de son fonctionnement et découvrez quelques autres fonctionnalités intéressantes comme celles-ci:
dox()
fonction qui est ajoutée à chaque fonction principale, c'est-à-direfs.readdir.dox()
dox()
fonction qui est ajoutée à chaque module installé via npm, iemarked.dox()
src
propriété qui est ajoutée à chaque fonction, c'est-à-direexpress.logger.src
.talk
commande).append
commandeVoir: https://github.com/thlorenz/replpad
la source
CXX=clang++ npm install replpad
contourner l'erreurg++: error: unrecognized command line option '-stdlib=libc++'
# # Fatal error in ../deps/v8/src/api.cc, line 1248 # Check failed: !value_obj->IsJSReceiver() || value_obj->IsTemplateInfo(). # Illegal instruction: 4
Pourquoi ne pas charger le fichier dans un nœud interactif repl?
Ensuite, vous pouvez ajouter des scripts package.json
testé avec le nœud v8.1.2
la source
node -i -r "./build/main/index.js"
?Actuellement, vous ne pouvez pas le faire directement, mais vous pouvez le faire
mylib = require('./foo.js')
dans le REPL. N'oubliez pas que les méthodes sont exportées et non déclarées comme globales.la source
.load my_work.js
, malgré la nécessité de quelquesexports.working_var = ...
déclarations supplémentaires , car le REPL barfs sur certains types de javascript parfaitement valides, comme les commentaires multilignes (au moins avec mareadline
configuration).replpad
c'est cool, mais pour un moyen rapide et facile de charger un fichier dans un nœud, d'importer ses variables et de démarrer un repl, vous pouvez ajouter le code suivant à la fin de votre fichier .jsMaintenant, si votre fichier est
src.js
, l'exécutionnode src.js
lancera le nœud, chargera le fichier, lancera une REPL et copiera tous les objets déclarés commevar
au niveau supérieur ainsi que tous les globaux exportés. Leif (require.main === module)
garantit que ce code ne sera pas exécuté s'ilsrc.js
est inclus via unerequire
instruction. En fait, vous pouvez ajouter n'importe quel code que vous souhaitez exécuter lorsque vous exécutez de manièresrc.js
autonome à des fins de débogage dans l'if
instruction.la source
Voici une version de fonction bash de la réponse de George :
Si vous mettez ceci dans votre,
~/.bash_profile
vous pouvez l'utiliser comme un alias, c'est-à-dire:la source
Une autre suggestion que je ne vois pas ici: essayez ce petit bout de code
Ensuite, vous pouvez simplement exécuter ce script et il inclura
foo
comme variablela source
Ancienne réponse
Ouvre le nœud REPL et saisit toutes les lignes de test.js dans REPL, mais pour une raison quelconque, le nœud se fermera après la fin du fichier
Un autre problème est que les fonctions ne seront pas hissées.
Meilleure réponse
Ensuite, tous les globaux déclarés sans var dans test2.js seront disponibles dans le REPL
Je ne sais pas pourquoi var a dans la portée globale ne sera pas disponible
la source