无法在 Vue + 电子应用程序中编译 opencv4nodejs

Posted

技术标签:

【中文标题】无法在 Vue + 电子应用程序中编译 opencv4nodejs【英文标题】:Couldn't compile opencv4nodejs in Vue + electron application 【发布时间】:2020-12-12 04:19:14 【问题描述】:

我正在尝试使用 opencv4nodejs、vue + electron-builder 构建一个人脸检测应用程序。在应用程序设置过程中,我遇到了一个问题,在安装 opencv4nodejs 后,在 npm run serve 期间出现以下错误。

Failed to compile.

./node_modules/opencv4nodejs/build/Release/opencv4nodejs.node 1:2
Module parse failed: Unexpected character '�' (1:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

如果有人可以帮助我,那就太好了。提前谢谢你

更新:我添加了我的 view.config.js 以供参考

module.exports = 
  chainWebpack: config => 
    config.module;
    // add ts files
    //      .rule('ts')
    //      .use('ts-loader')
    //        .loader('ts-loader')
    //        .tap(options => 
    // modify the options...
    //          return options
    //        )
  
;

【问题讨论】:

请分享您的 webpack.config 文件。 你好@Eldar 我已经添加了 vue.config.js 文件以供参考 将外部组件添加到 webpack webpack.js.org/configuration/externals 使用 webpack 加载 .node 文件需要添加node loader @Eldar 完全解决了我的问题,谢谢 【参考方案1】:

正如我们的朋友 @Eldar 所说,将 node-loader 添加到 vue.config.js 对我有用。谢谢

module.exports = 
  chainWebpack: config => 
    config.module       .rule('ts')
        .use('ts-loader')
        .loader('ts-loader')
        .end()
        .rule(/\.node$/)
        .use('node-loader')
        .loader('node-loader')
        .end()
  
;

希望这对大家有用。

【讨论】:

以上是关于无法在 Vue + 电子应用程序中编译 opencv4nodejs的主要内容,如果未能解决你的问题,请参考以下文章

具有Vue和vue-cli-plugin-electron-builder的电子应用程序无法与Tesseract.js一起使用

使用 Vue CLI Plugin Electron Builder 构建电子应用程序(在初始化之前无法访问“fa”)-TypeORM 关联 ManyToOne

灵光一闪!帮你使用Vue,搞定无法解决的“动态挂载”

无法使用正确的电子邮件地址和密码登录 Firebase

Vue模块未编译

无法在 GeForce 540M 上运行 CUDA 或 OpenCL