Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NW.js child_进程无法与vue.js应用程序一起使用_Node.js_Vue.js_Vuejs2_Node Webkit_Nw.js - Fatal编程技术网

Node.js NW.js child_进程无法与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;

我想用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;
      }
      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应用程序(没有框架或任何东西)上运行。