使用带有NodeJs本机模块的webpack

我有一个Node.js应用程序,它有几个本地模块,它们是通过node-gyp创build的。 这些模块不会以“node_modules”结尾,并且需要通过节点上的标准“请求”…

我的webpackconfiguration是基于这篇文章如果我运行的应用程序“unpackaged” – 一切工作正常…但是在我运行“webpack -p –progress”并尝试运行它后,我得到以下:

X:\myapp>node main-backend.bundle.js env=production port=80 ssl_port=443 [Error: Cannot open X:\myapp\lib\modules\my-module\build\Release\mymodule.node: Error: The specified module could not be found. 

我确保所有的装载机都安装了npm。 从错误,我可以告诉path是正确的(相对于server.native.js),但显然不是app.js …但是,这只是“正常工作”,当使用常规node.js,我不知道如果这甚至是问题的症结所在

我将不胜感激任何帮助!

这里是我的应用程序的删节布局

 myapp/ app.js node_modules/ lib/ modules/ my-module/ src/ one.cc one.h lib/ server.native.js bindings.gyp build/ Release/ mymodule.node 

server.native.js非常简单,调用本地模块

 try { module.exports = require('../build/Release/mymodule.node'); console.log('native module loaded...'); } catch (err) { console.log(err); } 

这是我的webpack.config.js

 var webpack = require("webpack"); var path = require("path"); var fs = require("fs"); var nodeModules = {}; fs.readdirSync("node_modules") .filter(function(x) { return [".bin"].indexOf(x) === -1; }) .forEach(function(mod) { nodeModules[mod] = "commonjs " + mod; }); module.exports = [ { name: "server-side", context: __dirname, entry: { "main-backend": "./app.js" }, target: "node", output: { path: __dirname, filename: "[name].bundle.js", chunkFilename: "[id].bundle.js" }, module: { loaders: [ { test: /\.json$/, loader: "json-loader" }, { test: /\.jade$/, loader: "jade-loader" }, { test: /\.node$/, loader: "node-loader" } ] }, externals: [nodeModules], resolve: { extensions: [ "", ".js", ".node"] }, plugins: [ new webpack.IgnorePlugin(/\.(css|less)$/) new webpack.BannerPlugin("require(\"source-map-support\").install();", { raw: true, entryOnly: false }) ], node: { __dirname: true, __filename: true }, devtool: "sourcemap", profile: true } ];