Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku?

Bagaimana untuk menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku?

青灯夜游
青灯夜游ke hadapan
2022-07-26 19:33:143854semak imbas

Bagaimana untuk membungkus fail boleh laku nodejs dengan pkg? Artikel berikut akan memperkenalkan kepada anda cara menggunakan pkg untuk membungkus projek Node ke dalam fail boleh laku, saya harap ia akan membantu anda!

Bagaimana untuk menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku?

Menggunakan pkg, projek Node.js boleh dibungkus sebagai fail boleh laku, malah boleh dijalankan pada peranti yang tidak mempunyai Node. js dipasang.

Persekitaran eksperimen

  • Sistem pengendalian: tingkap

  • versi nod : 16.14.2

Proses operasi

  • Muat turun PKG

Kita boleh memilih untuk memasangnya secara global dan melaksanakannya dalam mana-mana direktori:

$ npm install -g pkg
  • Program pembungkusan

Pertama tulis atur cara mudah, seperti kandungan 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');
});

Masukkan direktori akar projek nodejs dan laksanakan arahan berikut

$ pkg server.js

Ralat pertama dilaporkan

Ralat akan dilaporkan pada masa ini

$ 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'

Idea umum ialah persekitaran semasa hanya menyokong fail boleh laku yang disusun ke dalam sistem windows, iaitu kemenangan

arahan pelarasan ialah:

$ pkg -t win server.js

Antaranya, -t win adalah bersamaan dengan --targets win, yang bermaksud bahawa fail hanya disusun untuk tingkap.

Ralat kedua telah dilaporkan

Ralat dilaporkan sekali lagi semasa penyusunan:

$ 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:

Idea utama ialah fail binari yang sepadan diambil -v16.14.2 tiada dari cache -win-x64, kami hanya perlu memuat turun fail yang sepadan dan meletakkannya dalam direktori cache yang sepadan.

1. Pergi ke laman web rasmi untuk memuat turun fail versi yang sepadan Contohnya, saya ialah node-v16.14.2-win-x64

Alamat tapak web rasmi: https://github.com /vercel/pkg-fetch/releases

Bagaimana untuk menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku?

2. Namakan semula fail nod-v16.14.2-win-x64 yang dimuat turun dalam langkah sebelumnya kepada fetched-v16.14.2-win -x64, letakkannya dalam direktori cache pengguna semasa.

Sebagai contoh, direktori cache saya ialah C:UsersMangoDowner.pkg-cache Selepas menyambung teg ambil, ia menjadi direktori terakhir Rujuk kepada maklumat dalam laporan ralat dan anda boleh dapatkan bahawa teg itu ialah v3.3

 {"tag":"v3.3","name":"node-v16.14.2-win-x64"}

Kita boleh mendapatkan direktori induk akhir sebagai C:UsersMangoDowner.pkg-cachev3.3,
jadi alamat fail terakhir ialah C:UsersMangoDowner.pkg -cachev3.3fetched-v16. 14.2-win-x64

Kompil semula, berjaya!

$ pkg -t win server.js
> pkg@5.6.0

Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!

Atas ialah kandungan terperinci Bagaimana untuk menggunakan pkg untuk membungkus projek Node.js ke dalam fail boleh laku?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam