Comment empaqueter le fichier exécutable nodejs avec pkg ? L'article suivant vous présentera comment utiliser pkg pour empaqueter le projet Node dans un fichier exécutable. J'espère qu'il vous sera utile !
En utilisant pkg, vous pouvez empaqueter votre projet Node.js dans un fichier exécutable qui peut même être exécuté sur des appareils sur lesquels Node.js n'est pas installé. [Recommandations de didacticiel associées : Tutoriel vidéo Nodejs]
Environnement expérimental
Système d'exploitation : Windows
Version du nœud : 16.14.2
Processus de fonctionnement
Téléchargez PKG
Nous pouvons choisir de l'installer globalement et de l'exécuter dans n'importe quel répertoire :
$ npm install -g pkg
Programme d'emballage
Écrivez d'abord un programme simple, tel que le contenu de server.js
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(3000, () => { console.log('Express web app on localhost:3000'); });
Entrez le nodejs répertoire racine du projet, exécutez la commande suivante
$ pkg server.js
La première erreur est signalée
À ce moment, une erreur sera signalée
$ pkg server.js > pkg@5.6.0 > Targets not specified. Assuming: node16-linux-x64, node16-macos-x64, node16-win-x64 > Fetching base Node.js binaries to PKG_CACHE_PATH fetched-v16.14.2-linux-x64 [ ] 0%> Not found in remote cache: {"tag":"v3.3","name":"node-v16.14.2-linux-x64"} > Building base binary from source: built-v16.14.2-linux-x64 > Error! Not able to build for 'linux' here, only for 'win'
L'idée générale est que l'environnement actuel ne prend en charge que les fichiers exécutables compilés dans les systèmes Windows, qui Autrement dit, les instructions d'ajustement de win
sont :
$ pkg -t win server.js
où -t win est équivalent à --targets win, ce qui signifie que les fichiers sont compilés uniquement pour Windows.
La deuxième erreur est signalée
Une erreur est à nouveau signalée lors de la compilation :
$ pkg -t win server.js > pkg@5.6.0 > Fetching base Node.js binaries to PKG_CACHE_PATH fetched-v16.14.2-win-x64 [ ] 0%> Not found in remote cache: {"tag":"v3.3","name":"node-v16.14.2-win-x64"} > Building base binary from source: built-v16.14.2-win-x64 > Fetching Node.js source archive from nodejs.org... > Error! AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
L'idée principale est que le fichier binaire correspondant fetched-v16.14.2-win-x64 est manquant dans le cache. téléchargez le fichier correspondant et placez-le dans le cache correspondant Juste le répertoire.
1. Allez sur le site officiel pour télécharger le fichier de version correspondant, par exemple, le mien est node-v16.14.2-win-x64
Adresse du site officiel : https://github.com/vercel/pkg- fetch/releases
2. Renommez le fichier node-v16.14.2-win-x64 téléchargé à l'étape précédente en fetched-v16.14.2-win-x64 et placez-le dans le répertoire cache de l'utilisateur actuel.
Par exemple, mon répertoire de cache est C:UsersMangoDowner.pkg-cache Après avoir épissé la balise fetch, elle devient le répertoire final. En nous référant aux informations contenues dans le rapport d'erreur, nous pouvons comprendre que la balise est v3.3.
{"tag":"v3.3","name":"node-v16.14.2-win-x64"}
Nous pouvons obtenir Le répertoire parent final est C:UsersMangoDowner.pkg-cachev3.3,
Donc l'adresse finale du fichier est C:UsersMangoDowner.pkg-cachev3.3fetched-v16.14.2-win-x64
Compilez à nouveau, succès!
$ pkg -t win server.js > pkg@5.6.0
Pour plus de connaissances sur les nœuds, veuillez visiter : tutoriel Nodejs !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!