web-dev-qa-db-fra.com

Développement Node.js, Windows ou Linux?

Je suis intéressé par le développement web sur la plateforme Node.js. Mon OS hôte est Windows 7. Quelle serait la meilleure façon de configurer un environnement de développement. L'exécuter directement sur l'hôte ou sur une machine virtuelle basée sur Linux? Quels sont les avantages et les inconvénients de ces deux méthodes?

Si je vais avec une machine virtuelle, puis-je toujours exécuter l'éditeur de texte et le navigateur Web sous Windows (pour des raisons de performances)?

35
Gabriel Smoljár

Nous avons un système via lequel nous utilisons simplement un fichier de configuration, qui gère tous nos problèmes comme les différences de chemin ("c:\blarg" contre "~user/blarg") et, en prime, nous permet de contrôler les différences entre les environnements de débogage et de production.

Node.js est multiplateforme, nous avons donc totalement des développeurs travaillant sur toutes sortes d'ordinateurs, et ce n'est pas un problème du tout.

Voici un exemple de fichier de configuration que j'utilise sur un projet de stockage de fichiers:

/**
 * All of these are mandatory except for log_level (which defaults to "info", 1) 
 * and log_echo_to_console (which defaults to false)
 */
exports.config = {
    log_level: 0,
    log_file: "/path/to/send.log",
    request_log_file: "/path/to/send_requests.log",
    log_echo_to_console: true,
    port_number: 8088,
    no_notification_emails: true,
    image_url_base: "http://s3.amazonaws.com/",      // MAKE SURE THIS ENDS IN "/"
    tmp_file_folder:"/tmp/",
    s3_info: {
        key: 'xxxxxx',
        secret: 'yyyyy',
        file_bucket: 'sendtransfer/',
    },
    backend_info: {
        db_info: {
            server: "localhost",
            user: "db_user",
            password: "secret",
            database: "SendRemote",
            pooled_connections: 125,
            idle_timeout_millis: 30000
        },
        memcache_info: {
            Host: "127.0.0.1",
            port: "31111",
            pooled_connections: 200,
            timeout: 20000
        }
    },

    debug_server: true
};

Pour les machines Windows, changez simplement les chemins. C'est parfait!

Ensuite, dans le code, vous pouvez simplement saisir:

var local = require('local.config.js');
fs.writeFile(local.config.log_file);
// etc

Embrassez le multiculturalisme !!!

21
MarcWan

Eh par expérience, utilisez Linux Docker.

modifier Utilisez Docker. cuire dans vos dépendances, monter votre projet au moment de l'exécution, épingler à une version particulière du nœud LTS uniquement. Je prendrais une image docker de 2 Go sur un projet non exécutable, ce qui entraînerait des jours perdus à être obligé de mettre à niveau vers de nouveaux packages. - 10/04/2018

Mais de quelqu'un qui a passé les 8 dernières années à développer dans un environnement basé sur Linux et qui a passé les 6 derniers mois à développer des logiciels utilisant nodejs dans un environnement Windows Dot Net, voici mes découvertes, choquantes ou autres ...

Problèmes sur Windows:

  • ne peut pas utiliser efficacement docker La dernière version de la boîte à outils Docker résout ce problème en ce qui me concerne. ymmv.
  • la plupart des modules de nœuds nécessitent node_gyp, ce qui en apparence ne semble pas problématique (car gyp est censé être un compilateur multiplateforme), sauf lorsque vous explorez ce qu'il faut pour que cela fonctionne sur Windows: rien de moins que l'installation de Visual Studio fonctionnera . Cela craint pour moi pour plusieurs raisons:
  • Je suis normalement sous Linux, donc je ne veux jamais avoir à utiliser Visual Studio.
  • C'est entièrement l'idée la plus ridicule que compiler quelque chose sur Windows nécessite au minimum une installation de 3 Go d'un IDE ... pas des bibliothèques mais un logiciel entièrement monolithique de GUI que je ne lancerai jamais.
  • l'équivalent Windows de debians build-essentials est en fait une collection disparate tentaculaire et mal nommée d'installateurs gui dispersés sur Internet, tous nécessitant une séquence d'installation spécifique. Ceci, comparé à Sudo apt-get install build-essentials prend trop de temps et est semé d'embûches cachées.

  • le développement sur Windows vous permettra de prendre la mauvaise habitude de noms de chemins mixtes, à moins que votre équipe n'ait une politique stricte qui soit suivie/appliquée, ce sera une pente glissante vers des problèmes plus tard.

  • tandis que Windows prend en charge plus de 256 caractères dans les chemins, les outils importants ne le font pas. entrer dans l'étape gauche: rimraf et robocopy ... ugh.

  • le terminal Windows craint ... tout comme le shell par défaut: cmd.exe ... Powershell est beaucoup trop verbeux dans sa syntaxe et pas à mon goût ... L'installation de Cmder atténue cela quelque peu, mais la seule façon pour Cmder de s'interfacer avec cmd.exe est de copier les touches sur un terminal Windows caché exécutant cmd.exe. (lolwut). Cmder fonctionne beaucoup mieux avec des shells plus modulaires (zsh, bash, etc.).. mise à jour: J'utilise maintenant PowerShell avec pshazz et scoop, ce qui est en fait agréable à utiliser.

  • Après avoir encore amélioré la situation du shell et du terminal, nodejs pour Windows supposera toujours que vos variables d'environnement sont% OF%% THE%% WINDOWS%% VARIETY% ... pas le $ UNIX $ STYLE. Donc, vous utiliserez essentiellement bower et npm principalement à partir de cmd.exe ... plus ugh. Je ne semble plus avoir ce problème depuis que j'ai incorporé un mélange de cross-env et commandant ou yargs.

    • Vous devrez également installer python pour Windows, ce n'est pas un problème car choco existe et vous y est. update: jetez un œil à boxstarter, will aider à automatiser la configuration de votre nouvelle machine avec des recettes (ou vous pourriez réellement passer à l'utilisation d'ansible ou de sel).

    • python expérimenté, Ruby les développeurs vous diront que les anciens projets auront besoin de la version de leur moteur silo pour quand vous devrez les revoir (la mise à niveau vers des versions plus récentes n'est généralement pas opportune ou pratique, lisez : trous de lapin), vous voudrez donc quelque chose comme rvm et virtualenv ...

    • nvm (qui ne fonctionne que sur les systèmes unix linux et macosx) car il s'agit d'une collection de scripts bash. Je recommande d'utiliser ZSH comme shell avec Zgen et Tarrasch/zsh-autoenv brancher.

    • nodeenv, ce qui est plus probable ... un programme python qui s'intègre à virtualenv. Certaines personnes aiment ça. Je n'ai aucun problème avec cela, mais notre équipe utilise nvm.
    • cependant, vous êtes mieux avec nvm-windows pour des "raisons". grattez cela, utilisez nodist sur Windows ... la barre est le meilleur choix, vous n'aurez pas à vous soucier d'une sorte d'autoenv puisque nodist by design le gère.

Installation sous Windows:

  1. installer chocolaté
  2. choco install cmder nodejs python2 choco install python2
  3. installer http://scoop.sh, puis utilisez-le pour installer pshazz.
  4. supprimer toutes les versions du nœud installées manuellement à l'échelle mondiale.
  5. installer nvm-windows installez nodist.
  6. installez visual-studio 2012 express, puis ne le lancez jamais si vous chérissez vos cycles de processeur. cela peut être exagéré car Microsoft a publié un équivalent à build-essentials.
  7. installer Windows 7/10 64 bits sdk

Problèmes sous Linux:

tldr; utilisez nvm. pour d'autres raisons que celles ci-dessous.

  • vous devrez définir le chemin global npm node_modules dans un répertoire appartenant à l'utilisateur (j'ai commencé à utiliser ~/.local/share/npm). Agréablement, c'est quelque chose que j'ai trouvé que l'installation de nodejs sur Windows était correcte (probablement pas intentionnellement). Un non problème lors de l'utilisation de nvm.
  • Ubuntu a déjà un binaire appelé node, donc #!/usr/bin/env node par défaut ne lancera pas nodejs. Heureusement, les systèmes Debian ont un outil de gestion soigné pour contrôler ce que le binaire env émet: update-alternatives. ignorer les suggestions d'utilisation de liens symboliques ici, qui ne causeront des problèmes que par la suite de manière subtile. également un problème lors de l'utilisation de nvm.

Installation sous Linux:

$ Sudo apt-get install git-core git-flow build-essentials python-dev python-  pip
$ curl https://raw.githubusercontent.com/creationix/nvm/v0.20.0/install.sh | bash
$ npm config set prefix ~/.local/share/npm
$ nvm install stable
$ nvm alias default stable

les références:

41
airtonix

Je suis également sur Windows 7 et j'utilise Virtualbox avec un invité Linux (debian), je le recommanderais car je suis moi-même plus rapide à faire des choses dans la ligne de commande, puis à cliquer dans Windows.

Une autre fonctionnalité intéressante est que si vous placez votre VM sur une clé USB, vous pouvez l'emporter avec vous et l'utiliser partout où un hôte Virtualbox est installé, afin que vous puissiez prendre tout votre environnement de développement avec vous .

Ce n'est pas un problème du tout d'utiliser votre éditeur de texte ou navigateur préféré dans Windows, installez simplement samba et montez votre répertoire personnel dans Windows. Il en va de même pour votre navigateur, car le VM est juste une autre machine de votre réseau local, au lieu de pointer votre navigateur vers localhost, pointez-le sur les VM Ip et tout va bien.

Le problème évident ici est que si vous n'avez aucune expérience avec Linux, vous devriez probablement vous en tenir à Windows car cela vous prendra un certain temps pour y accéder.

5
supernova

juste mes deux cents peut-être encore moins:

Je vais vous suggérer une troisième option: pour installer deux fois la configuration windows/ubuntu (de préférence bunt dist qui est le plus convivial) et rechercher cette option également de cette façon, vous seriez plus familier avec linux/unix et même iOS qui vous feront même mieux comprendre Windows et un meilleur programmeur. Parfois, la boîte virtuelle est trop lente, tandis que Linux est très efficace avec les ressources.

Si vous avez la possibilité d'installer une machine virtuelle, vous pouvez également essayer d'installer une distribution Linux et vous familiariser avec ce langage/système d'OS sur lequel une grande partie du Web est structurée.

2
sivi

J'aime vraiment coder node.js sur Windows en utilisant git bash: http://blog.nodester.com/post/19902515151/tips-for-windows-users

Il semble alors plus rapide et plus facile que d'exécuter VirtualBox. Étant donné que j'utilise toujours Virtual Box pour les tests avant de passer en production.

0
Robert Peters