2017-08-05 86 views
2

工人/進程文件我有一個創建子進程的文件,該代碼是與此類似:如何以包括的WebPack

var cp = require('child_process'); 

function process() { 
    return cp.fork('./worker'); 
} 

module.exports(process); 

./worker似乎並沒有被包含在捆綁。

Error: Cannot find module 'C:\Users\USER\Documents\GitHub\PROJECT\worker' 
    at Function.Module._resolveFilename (module.js:485:15) 
    at Function.Module._load (module.js:437:25) 
    at Function.Module.runMain (module.js:605:10) 
    at startup (bootstrap_node.js:158:16) 
    at bootstrap_node.js:575:3 
module.js:487 
    throw err; 
    ^

我怎樣才能確保工人的文件捆綁,以及:運行process功能時,這會導致下面的錯誤?我希望我的整個項目在一個文件中。

回答

2

有一種可能的解決方法。您可以將所有工作文件複製到dist目錄中。讓我們說你有一個workers目錄中的所有工作文件。所以你的上面的代碼稍微改變了一些(包括來自工人direcotory的worker.js)。

var cp = require('child_process'); 
function process() { 
    return cp.fork('./workers/worker'); 
} 

module.exports(process); 

並且要將worker文件夾複製到build/dist文件夾中,可以使用copy-webpack-plugin。在你的情況下,插件可以像這樣在webpack配置文件中使用。

var CopyWebpackPlugin = require('copy-webpack-plugin') 

module.exports = { 

//您的進入和輸出的配置將是不同的,當然 條目:」 ./main.js', 輸出:{ 文件名: 'DIST/bundle.js' }, 目標: '節點', 插件:[ 新CopyWebpackPlugin([{ 從 : '工', 到:「DIST /工人 } ]) ] }

您的軟件包仍然沒有worker.js文件,但該參考將適用於fork方法。

+0

這可以工作,但它仍然需要用戶下載多個文件,而不是僅僅捆綁一個。 –

+0

你打算如何使用捆綁包?它是一個圖書館嗎? –

+0

它是Node.js和瀏覽器的[圖書館](https://github.com/wagenaartje/netaptic)。對於Node來說,它並不是一個真正的問題,但瀏覽器需要多個cdn鏈接來訪問庫是很奇怪的。 –