代码之家  ›  专栏  ›  技术社区  ›  Fluffy

将本地节点C++ ++导入到虚拟用户.js

  •  0
  • Fluffy  · 技术社区  · 5 年前
    // package.json
    {
      "name": "simple-addon",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "gypfile": true,
      "scripts": {
        "build": "node-gyp rebuild",
        "clean": "node-gyp clean"
      },
      "files": [
        "src/*.cpp",
        "src/*.hpp",
        "binding.gyp"
      ],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "eslint": "^5.16.0",
        "node-gyp": "^4.0.0"
      },
      "dependencies": {
        "node-addon-api": "^1.6.3"
      }
    }
    
    // index.js
    const simpleaddon = require('./build/Release/simple-addon.node');
    
    module.exports = simpleaddon;
    

    npm init npm install ../simpleaddon 在新目录中。

    1. 在虚拟用户.js通过vue cli创建的前端应用程序:

    我无法简单地导入它(由于我仍然不能完全理解的原因,对不起),我不得不使用另一个加载程序:nativeext加载程序。否则我会 Module parse failed: Unexpected character '' (1:0) You may need an appropriate loader to handle this file type.

    配置加载程序:

    // vue.config.js
    module.exports = {
        chainWebpack: config => {
            config.module
                .rule('native')
                .test(/\.node$/)
                .use('native-ext-loader')
                .loader('native-ext-loader')
        }
    }
    

    import simpleaddon from "simple-addon"; 我得到:

    Uncaught Error: Cannot open /simple-addon.node: TypeError: Cannot read property 'dlopen' of undefined
        at Object.eval (simple-addon.node?5d7d:1)
        at eval (simple-addon.node:2)
        at Object../node_modules/simple-addon/build/Release/simple-addon.node (app.js:1663)
        at __webpack_require__ (app.js:724)
        at fn (app.js:101)
        at eval (index.js?7d23:1)
        at Object../node_modules/simple-addon/index.js (app.js:1674)
        at __webpack_require__ (app.js:724)
        at fn (app.js:101)
        at eval (cjs.js?!./node_modules/babel-loader/lib/index.js!./node_modules/cache-loader/dist/cjs.js?!./node_modules/vue-loader/lib/index.js?!./src/components/SimpleAddonComponent.vue?vue&type=script&lang=js&:2)
    

    我错过了什么?

    0 回复  |  直到 5 年前