【问题标题】:Sqlite3, electron, webpack: cannot find module abi_crosswalk.jsonSqlite3、电子、webpack:找不到模块 abi_crosswalk.json
【发布时间】:2016-06-25 05:33:45
【问题描述】:

我正在尝试让 sqlite3 结合 webpack、babel 和 react 在电子中工作。

这些是 package.json 中的依赖项:

"devDependencies": {
    "babel-core": "^6.7.0",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "css-loader": "^0.23.1",
    "electron-packager": "^5.2.1",
    "electron-prebuilt": "^0.36.8",
    "electron-rebuild": "^1.1.3",
    "node-sass": "^3.4.2",
    "react": "^0.14.7",
    "react-dom": "^0.14.7",
    "sass-loader": "^3.1.2",
    "style-loader": "^0.13.0",
    "webpack": "^1.12.14",
    "webpack-dev-server": "1.14.0"
  },
  "dependencies": {
      "sqlite3": "^3.1.1"
  }

运行npm install 后,我运行./node_modules/.bin/electron-rebuild,如documentation 中所述。

这是我的 webpack.config.js:

var webpack = require('webpack');
module.exports = {
    context: __dirname + '/src',
    entry: './entry.js',
    target: 'electron',

    output: {
        filename: 'bundle.js',
        path: __dirname + '/build',
        publicPath: 'http://localhost:8080/build/'
    },

    module: {
        loaders: [{
            test: /\.js$/,
            loader: 'babel',
            exclude: /node_modules/,
            query: {
                presets: ['es2015', 'react']
            }
        }, {
            test: /\.scss$/,
            loader: 'style-loader!css-loader!sass-loader'
        }]
    }
};

当我将var sqlite3 = require('sqlite3').verbose(); 添加到我的代码并尝试运行它时,我会收到以下错误消息:

`Uncaught Error: Cannot find module "./abi_crosswalk.json"`

./~/sqlite3/~/node-pre-gyp/package.json
Module parse failed: .../node_modules/sqlite3/node_modules/node-pre-gyp/package.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "name": "node-pre-gyp",
|   "description": "Node.js native addon binary install tool",
|   "version": "0.6.14",
 @ ./~/sqlite3/~/node-pre-gyp/lib/node-pre-gyp.js 60:16-37

结果,一堆模块找不到。

谁能帮我解决这个问题?

编辑:这是导致 cmets 中提到的 package.json 错误的 bundle.js 中的代码。

function(module, exports, __webpack_require__) {

    "use strict";

    var versioning = __webpack_require__(310);
    var existsSync = __webpack_require__(19).existsSync || __webpack_require__(273).existsSync;
    var path = __webpack_require__(273);

    module.exports = exports;

    exports.usage = 'Finds the require path for the node-pre-gyp installed module';

    exports.validate = function(package_json) {
        versioning.validate_config(package_json);
    };

    exports.find = function(package_json_path,opts) {
       if (!existsSync(package_json_path)) {
            throw new Error("package.json does not exist at " + package_json_path);
       }
       var package_json = __webpack_require__(1133)(package_json_path);
       versioning.validate_config(package_json);
       opts = opts || {};
       if (!opts.module_root) opts.module_root = path.dirname(package_json_path);
       var meta = versioning.evaluate(package_json,opts);
       return meta.module;
    };


/***/ },

【问题讨论】:

  • 你可以在这里找到答案:stackoverflow.com/questions/35914213/…
  • 现在我收到了Uncaught Error: package.json does not exist at /package.json
  • 你能提供完整的错误信息吗?
  • 就是这样,除了后续无法找到的模块的附加错误消息。
  • 我已经添加了上面抛出错误的代码。

标签: node.js sqlite webpack electron


【解决方案1】:

似乎var sqlite3 = require('sqlite3').verbose(); 仅适用于主进程,但不适用于任何渲染进程。问题解决了。

【讨论】:

    【解决方案2】:

    npm install 后,试试这个:./node_modules/.bin/electron-rebuild -w sqlite3 -p。 首先,你应该安装 sqlite3 和 electron-rebuild 。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 2016-04-27
      • 2016-12-07
      • 2016-07-10
      • 1970-01-01
      • 2016-11-30
      • 2016-08-13
      • 2016-02-28
      • 1970-01-01
      相关资源
      最近更新 更多