Je viens de commencer à en savoir plus sur Express 4.0 dans mon application Node.js, et j'ai trouvé qu'il générait un ./bin/www
fichier, sur lequel seuls le serveur d'application et les paramètres de port sont écrits et tout ce qui est autre comme le middleware et le routage est défini dans un ./app.js
fichier.
Cependant, je ne suis pas sûr de ce que cela ./bin/www
fait. J'ai utilisé Express 3.x et j'ai toujours défini les paramètres de serveur et de port ainsi que le routage et le middleware sur le même ./app.js
fichier, et j'ai lancé mon application de nœud avec node app.js
. Alors, quel est l'intérêt d'utiliser le ./bin/www
? Est-ce que cela sépare uniquement la définition du serveur et du port des autres?
À l'heure actuelle, lorsque je crée le package en utilisant express-generator, le package.json
inclut la définition suivante:
"scripts": {
"start": "node ./bin/www"
}
Cependant, je me demande si je dois lancer mon application en utilisant node ./bin/www
, ou npm start
. Quelle commande dois-je exécuter pour démarrer mon application?
Et aussi, lorsque je déploie mon application sur heroku, que dois-je écrire dans le Procfile
fichier? Est web: node app.js
assez?
la source
Réponses:
Dans Express 3.0 , vous utiliseriez normalement
app.configure()
(ouapp.use()
) pour configurer le middleware requis dont vous avez besoin. Les intergiciels que vous avez spécifiés sont fournis avec Express 3.0.Exemple:
Dans Express 4.0 cependant, tous les middlewares ont été supprimés afin qu'ils puissent être maintenus et mis à jour indépendamment du noyau Express (à l'exception du middleware statique), ils doivent donc être appelés séparément (ce que vous voyez dans
app.js
).Le
bin/
répertoire sert d'emplacement où vous pouvez définir vos différents scripts de démarrage . Lewww
est un exemple pour démarrer l'application express en tant que serveur Web.En fin de compte, vous pourriez avoir des scripts comme
test
,stop
ourestart
, etc. Avoir cette structure vous permet d'avoir différentes configurations de démarrage, sans entasser tout enapp.js
.La bonne façon de démarrer votre application Express est:
Pour déployer une application Express 4.x sur Heroku , ajoutez ceci à votre
Procfile
:Ou si vous pouvez simplement utiliser le script de démarrage dans votre
package.json
, heroku l'utilisera automatiquement, en savoir plus icila source
www
. Je ne sais pas pourquoi il est nommé ainsi - peut-être nommé d'après le World Wide Web?Les applications de nœud comme Express 3.x utilisent des fichiers de démarrage non standard
app.js
, mais ce n'est pas le bon fichier à exécuter.package.json
aqui indique la ligne de commande de démarrage. Ce n'est pas trivial car cela contient potentiellement une ligne de commande complète, et pas seulement un chemin vers le fichier de démarrage.
la source
si vous utilisez express-Generator, regardez simplement votre fichier local ,,
./bin
il y a unwww
fichier à l'intérieur de ./bin. Ainsi, lorsque vous exécuteznode ./bin/www
, node.js exécutera le code au niveau duwww
fichier. Rien d'extraordinaire.la source
Sous Windows, utilisez cette commande:
la source
Tout ce qui précède a bien répondu. Mais au cas où si vous souhaitez utiliser
node app.js
que les versions Express 3. *. Vous pouvez suivre ci-dessous:Étant donné que le fichier app.js qui a été généré par le générateur Express 4 est maintenant un module Node.js , il ne peut plus être démarré indépendamment en tant qu'application (sauf si vous modifiez le code). Le module doit être chargé dans un fichier Node.js et démarré via le fichier Node.js. Le fichier Node.js est ./bin/www dans ce cas. Pour plus d'informations, visitez la documentation officielle .
Ni le répertoire bin ni le fichier www sans extension ne sont obligatoires pour créer une application Express ou démarrer l'application. Ce ne sont que des suggestions faites par le générateur, alors n'hésitez pas à les modifier en fonction de vos besoins.
Pour se débarrasser du répertoire www et conserver les choses «Express 3 way», supprimez la ligne qui dit module.exports = app; à la fin du fichier app.js, puis collez le code suivant à sa place:
Ensuite, modifiez
"start": "node ./bin/www"
le fichier package.json . Depuis, vous avez déplacé la fonctionnalité de ./bin/www vers app.js. Maintenant, commencez à utiliser"start": "node app.js"
pour exécuter votre application express.la source
mettez ceci dans Procfile
web: node ./bin/www
et vérifiez si cela fonctionne avecforeman start
. L'application devrait être disponible sur le port 5000la source