2017-07-24 75 views
6

我做了一個nodejs共享庫,現在我想打包它來部署它。我希望能夠使用它與包裝的角2應用程序感謝webpack。打包nodejs C++共享庫

共享庫位於文件夾build/Release中。

如何繼續在webpack中很好地打包它?或者它是一個特定的package.json聲明?在看看文件的NodeJS

,DLL名稱使用擴展.node (https://nodejs.org/api/addons.html#addons_loading_addons_using_require

的WebPack節點裝載機可以幫助嗎? https://webpack.js.org/loaders/node-loader/

我將使用服務器端渲染,否則這將不可能。

問候, 斯蒂芬

+0

你的意思是你想在瀏覽器中運行它嗎?這是不可能的。 – robertklep

+0

這是可能的。你必須運行它的服務器端。訪問某些硬件數據非常有用。 – sancelot

+2

這就是爲什麼我問你是否想在瀏覽器中運行它,因爲你用_angular_標記了你的問題。即便如此,我也不認爲Webpack可以綁定本地插件。 – robertklep

回答

0

不,你不能。因爲C/C++插件是本地二進制代碼,只能動態鏈接到節點服務器。

出於安全考慮,您不能在瀏覽器上從JavaScript執行任何本機二進制代碼,因爲通常編譯本機二進制文件以針對特定體系結構/操作系統。

如果您覺得在瀏覽器上執行本機代碼的衝動請檢查Chrome Native Client Project(NaCI):https://developer.chrome.com/native-client

+0

是的,正如我在評論中寫的,我將使用服務器端渲染。 js代碼在服務器端執行,並將html呈現的代碼發送到瀏覽器。 – sancelot

+0

我同意@etsus,並且我看不到任何直接關係: - 第一個:可以通過npm安裝並使用node-gyp進行編譯以便僅由節點服務器使用的node.js插件。 - 第二種:Webpack將你的角度應用程序文件捆綁在瀏覽器中使用。 Angular可以與節點服務器上的API進行交互,該節點服務器可以使用任何模塊或庫,即使它包含本機二進制文件。 有意義嗎?如果沒有,請提供您想要實現的更多細節。 –

+0

用node-gyp加載/運行的模塊沒有問題。 webpack捆綁了應用程序,對。它以你想要的方式捆綁它。在我的情況下,服務器端渲染使用angular/universal作爲項目的這一部分。我的nodeC++庫允許直接訪問cnc機器的一些硬件數據(機器人技術)。我明白我可以使用web服務和xhr請求來做類似的事情,但這不是我們想要的方式。關於技術的一切都允許我想要做的事情。目前唯一的「阻塞」原因似乎是webpack無法找到並打包文件。 – sancelot

1

使用node-loader或node-native-loader,它不想加載節點模塊。在webpack.config.js,我已經加入下一個規則:

"rules": [ 
    { 
    "test": /\.node$/, 
    "loader": "node-native-loader?from=app" 
    }, 

結果: 找不到模塊 './control.node'。

+0

我的問題不是來自加載程序,我讀過加載程序代碼,加載程序在執行代碼時使用,而不是在創建程序包時使用。它看起來像我的.node文件沒有捆綁。所以一個特定的目標mlust被添加到webpack中? – sancelot