Node.js NW.js child_进程无法与vue.js应用程序一起使用
我想用node webkit()构建一个vue.js应用程序 应用程序必须执行二进制代码,所以我这样做了Node.js NW.js child_进程无法与vue.js应用程序一起使用,node.js,vue.js,vuejs2,node-webkit,nw.js,Node.js,Vue.js,Vuejs2,Node Webkit,Nw.js,我想用node webkit()构建一个vue.js应用程序 应用程序必须执行二进制代码,所以我这样做了 const exec = require("child_process").exec; exec( '"C:\\someBin.exe" /someOptions', (e, stdout, stderr) => { if (e instanceof Error) { console.error(e); throw e;
const exec = require("child_process").exec;
exec(
'"C:\\someBin.exe" /someOptions',
(e, stdout, stderr) => {
if (e instanceof Error) {
console.error(e);
throw e;
}
console.log("stdout ", stdout);
console.log("stderr ", stderr);
}
);
我尝试了.exec或.spawn,但总是出现一些奇怪的错误,如:
TypeError: (0 , n(...).exec) is not a function
它必须使用vue.js与我链接,因为当我在一个简单的节点webkit应用程序中使用一个脚本标记测试此代码时,它可以工作
webpack(由vue.js使用)与nodejs的require关键字之间是否存在某种不兼容?
当打印require(“child_进程”)的内容时,有一些东西,但与我期望的完全不同(没有spawn或exec方法)。似乎require本身并不适用于这个特定的案例。但是ODY它仍然适用于其他已经安装的npm软件包
要创建应用程序,我使用“npm run build”,它直接在/dist目录中生成最终文件。在这个目录中,我放置了节点webkit文件,因此我可以从那里运行节点webkit二进制文件。最终我找到了解决方案 Web包似乎覆盖了一些节点模块 要防止出现这种情况,您只需将其添加到您的网页配置中:
target: 'node-webkit',
我了解到还有其他类型的可用目标,如“节点”
这是大部分网页文件,可帮助您正确放置上述行
module.exports = {
context: path.resolve(__dirname, '../'),
entry: {
app: './src/main.js'
},
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV === 'production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
},
resolve: {
extensions: ['.js', '.vue', '.json'],
alias: {
'vue$': 'vue/dist/vue.esm.js',
'@': resolve('src'),
}
},
module: {
rules: [
...(config.dev.useEslint ? [createLintingRule()] : []),
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'), resolve('test'),
resolve('node_modules/webpack-dev-server/client')]
},
{
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('img/[name].[hash:7].[ext]')
}
},
{
test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('media/[name].[hash:7].[ext]')
}
},
{
test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
loader: 'url-loader',
options: {
limit: 10000,
name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
}
}
]
},
target: 'node-webkit'
}
您是否试图在客户端使用
exec
?无法从浏览器执行二进制文件。如果没有节点核心
,您也不能使用子进程
,因为它只能在服务器端执行。@ohgodhous谢谢您的回答。正如我所说,我使用的是NW.js,而不是普通的浏览器。在这种情况下,我认为没有客户端或服务器端。上面的代码在一个简单的nw.js应用程序(没有框架或任何东西)上运行。