web-dev-qa-db-fra.com

npm start vs node app.js

Je suis extrêmement nouveau dans Node) et j'essaie de comprendre les bases de l'application. Je suis curieux de savoir pourquoi ces deux commandes:

noeud app.js

--contre--

npm start

affiche la même chose sur la console et semble continuer à "écouter", mais pourquoi, lorsque j'essaie d'accéder http: // localhost: 30 , je reçois un 404 uniquement lors de l'exécution de la première commande.

Je vois qu'Express 4 semble avoir une structure d'application différente, mais pourquoi l'une écoute-t-elle avec succès et l'autre pas, malgré le même comportement dans la console?

Toute explication est utile. Merci!

43
dudewad

Les deux commandes ne sont pas nécessairement les mêmes. npm start exécute tout ce que dit le script 'start' pour s'exécuter tel que défini dans votre 'package.json', node app.js exécute le fichier 'app.js' dans 'noeud'. Voir http://browsenpm.org/package.json pour plus d'informations. Donc, si vous aviez le package.json suivant, les commandes sont complètement différentes.

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node index.js"
    }
    ....
}

Le package.json suivant est ce que vous voudrez rendre identiques.

{
    "name": "my cool node project",
    ....
    "scripts": {
        "start": "node app.js"
    }
    ....
}

Je commencerais par vérifier ce que le script 'start' est configuré pour exécuter et essayer d'exécuter la même commande directement dans votre CLI plutôt que via NPM pour voir où se situe la différence.

mais pourquoi est-ce que l'un écoute avec succès et l'autre ne

Si le serveur renvoie 404, cela suggère que le serveur est à l'écoute, mais que la racine du document ou les autorisations d'accès ne sont pas configurées correctement, il renvoie donc une réponse "Fichier non trouvé".

41
andyberry88

En plus de la réponse ci-dessus, j'aimerais ajouter un point:

Faire npm start _ sans avoir la portion scripts dans votre package.json entraînera npm recherche de server.js dans ce répertoire, s'il est trouvé, exécutez-le avec node server.js sinon ça va lancer npm ERR! missing script: start en tant que message d'erreur.

8
BlackBeard

Il y a peu de choses que j'aimerais ajouter, cela pourrait aider le public à venir

Tout d'abord

Node - est le temps d'exécution pour tout code javascript

NPM est un gestionnaire de paquets, qui peut être utilisé pour télécharger/mettre à jour/exécuter des paquets et bien d’autres, comprenant 3 choses

  1. Site Internet
  2. npm CLI
  3. le registre

Lisez ici pour voir tout ce que cela fait pour vous.

node any.js - il s’agira simplement d’exécuter le fichier javascript "any, js". Donc, s'il n'y a pas de code pour démarrer un serveur, vous obtiendrez une erreur

npm start - exécutera la commande de démarrage dans le package.json. Par exemple, le script de démarrage dans votre package.json est très simple.

enter image description here

Il va simplement imprimer "Bonjour" sur la console.

si vous créez une application de réaction à l'aide de CRA, vous aurez généralement "les scripts de réaction commencent" dans cette section. Qui configure l’environnement de développement et démarre un serveur, ainsi que le rechargement de module à chaud

C'est la raison pour laquelle vous ne recevez pas d'erreur dans ce cas

0
Pradeep