如何使用node-webkit中的webpack将节点模块与本机插件捆绑在一起?

我正在尝试构buildpty.js以用于node-webkit (即nw.js)v0.8.6:

mkdir testapp && cd testapp nvm use 0.10.36 npm install -g nw-gyp npm install pty.js cd node_modules/pty.js # Build the native addon for node-webkit v0.8.6: nw-gyp configure --target=0.8.6 && nw-gyp build 

输出以gyp info ok结束 。

使用简单的app.jsindex.html ,该应用程序将在JavaScript控制台中无误地启动:

 <!-- index.html --> <!DOCTYPE html> <html> <head> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> <script src="app.js"></script> </body> </html> 
 // app.js var pty = require('pty.js'); var term = pty.spawn('bash', [], { name: 'xterm-color', cols: 80, rows: 30, cwd: process.env.HOME, env: process.env }); term.on('data', function(data) { console.log(data); }); term.write('ls\r'); term.resize(100, 40); term.write('ls /\r'); console.log(term.process); 

package.json

 { "name": "testapp", "main": "index.html" } 

我想通过将app.js捆绑到bundle.js来支持通过webpack进行ES6和JSX编译:

 <!-- index.html --> <!DOCTYPE html> <html> <head> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> <script src="bundle.js"></script> </body> </html> 

捆绑app.js

 npm install -g webpack webpack app.js bundle.js --target="node-webkit" # This fails 

但是webpack失败,出现这个错误:

 Hash: 6c3cd8b4ec249ab8fd05 Version: webpack 1.6.0 Time: 76ms Asset Size Chunks Chunk Names bundle.js 21244 0 [emitted] main [0] ./app.js 311 {0} [built] + 10 hidden modules ERROR in ./~/pty.js/build/Release/pty.node Module parse failed: /Users/Spencer/Desktop/testapp/node_modules/pty.js/build/Release/pty.node Line 1: Unexpected token ILLEGAL You may need an appropriate loader to handle this file type. (Source code omitted for this binary file) @ ./~/pty.js/lib/pty.js 10:10-46 

require本地二进制文件(如pty.node )时,是否需要使用加载程序? webpack文档说"node-webkit"目标“支持native node.js模块”; 也许它还不支持本地插件?

虽然我无法使webpack工作,但通过使用require('babel/register') ,我可以使ES6 + JSX工作:

 <!-- index.html --> <!DOCTYPE html> <html> <head> <title>Hello World!</title> </head> <body> <main></main> <script> require('babel/register'); require('./js/app'); </script> </body> </html> 
 // ./js/app.js import React from 'react'; React.render( <span>Hello World!</span>, document.querySelector('main') );