簡體   English   中英

node.js 編譯的 pkg 不會運行(但從節點運行)

[英]node.js compiled pkg won't run (but does from node)

我有一個使用 node.js 開發的簡單程序,其想法是獲取一些網站並顯示報告,用於測試公司的 Web 內容過濾。

我開始努力獲取網站的屏幕截圖,當我將我的代碼作為node index.js運行時,它運行良好,它輸出“google.png”並包含網站的屏幕截圖(就像在屏幕截圖流示例中一樣)。 但是,我使用npx pkg index.js -t linux編譯它,它開始給我執行錯誤。

我將程序簡化為:

const fs = require('fs')
const screenshot = require('screenshot-stream');

const stream = screenshot('http://google.com', '900x180', {crop: true});

stream.pipe(fs.createWriteStream('google.png'));

我運行node index.js並生成圖像。 但是,在編譯后(並將 phantomjs 添加到 npx 警告的 phantom 文件夾中),我收到一個錯誤:

./index 
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: Can't open '/snapshot/screenshots/node_modules/screenshot-stream/stream.js'
    at LineStream.module.exports.byline.on.data (/snapshot/screenshots/node_modules/screenshot-stream/index.js:77:16)
    at emitOne (events.js:116:13)
    at LineStream.emit (events.js:211:7)
    at addChunk (_stream_readable.js:263:12)
    at readableAddChunk (_stream_readable.js:250:11)
    at LineStream.Readable.push (_stream_readable.js:208:10)
    at LineStream.Transform.push (_stream_transform.js:147:32)
    at LineStream._pushBuffer (/snapshot/screenshots/node_modules/byline/lib/byline.js:125:17)
    at LineStream._transform (/snapshot/screenshots/node_modules/byline/lib/byline.js:116:8)
    at LineStream.Transform._read (_stream_transform.js:186:10)

我正在使用 screenshot-stream@4.2.0、npm@6.4.1、pkg@4.3.4

任何幫助是極大的贊賞

調試了這段代碼,發現 screenshot-stream 模塊使用了

path.join(__dirname, 'stream.js')

作為參數傳遞以將 phantomjs 作為子進程調用。

當直接在節點上運行時,這工作正常,但是當使用 pkg 編譯時,這個子進程無法訪問由這個打包器創建的快照文件系統。

我找到了一個解決方法:修改 screenshot-stream/index.js:

在第 45 行:

'./'替換__dirname並將 stream.js 放在二進制工作目錄中,應該可以正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM