Maison >interface Web >js tutoriel >Comment utiliser pkg pour empaqueter le projet Node.js dans un fichier exécutable ?

Comment utiliser pkg pour empaqueter le projet Node.js dans un fichier exécutable ?

青灯夜游
青灯夜游avant
2022-07-26 19:33:144042parcourir

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 !

Comment utiliser pkg pour empaqueter le projet Node.js dans un fichier exécutable ?

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 sans Node.js installé.

Environnement expérimental

  • Système d'exploitation : Windows

  • Version du nœud : 16.14.2

Processus de fonctionnement

  • Télécharger PKG

Nous pouvons choisir le global Pour installer, exécutez dans n'importe quel répertoire :

$ npm install -g pkg
  • Programme de packaging

Écrivez d'abord un programme simple, tel que server.js content

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 répertoire racine du projet nodejs et exécutez la commande suivante

$ pkg server.js

La première erreur est signalée

Une erreur sera signalée à ce moment-là

$ 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, c'est-à-dire win

La commande d'ajustement est :

$ pkg -t win server.js

où -t win équivaut à --targets win, c'est-à-dire 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

Comment utiliser pkg pour empaqueter le projet Node.js dans un fichier exécutable ?

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer