首页 > 解决方案 > selenium-webdriver [bazel-genfiles] 的电子 webpack 问题

问题描述

对于我的电子应用程序项目(使用样板文件),我想使用selenium-webdriverchromedriver执行一些 selenium 节点命令。

问题是,当我添加模块时selenium-webdriver,突然我的应用程序在终端和控制台中抛出错误和警告。


终端警告:

WARNING in ./node_modules/selenium-webdriver/lib/http.js 49:11-26
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/selenium-webdriver/http/index.js
 @ ./node_modules/selenium-webdriver/index.js
 @ ./src/components/playback.js
 @ ./src/components/App.js
 @ ./src/index.js

WARNING in ./node_modules/selenium-webdriver/lib/http.js
Module not found: Error: Can't resolve '../../../../bazel-genfiles' in
'<MY_LOCAL_DIR>/electron-react-webpack-boilerplate/node_modules/selenium-webdriver/lib'
 @ ./node_modules/selenium-webdriver/lib/http.js
 @ ./node_modules/selenium-webdriver/http/index.js
 @ ./node_modules/selenium-webdriver/index.js
 @ ./src/components/playback.js
 @ ./src/components/App.js
 @ ./src/index.js

应用程序错误:

Error: Cannot find module 'undefined'
    at webpackMissingModule (http.js:53)
    at requireAtom (http.js:53)
    at Object../node_modules/selenium-webdriver/lib/http.js (http.js:35)
    at __webpack_require__ (bootstrap:685)
    at fn (bootstrap:59)
    at Object../node_modules/selenium-webdriver/http/index.js (index.js:29)
    at __webpack_require__ (bootstrap:685)
    at fn (bootstrap:59)
    at Object../node_modules/selenium-webdriver/index.js (index.js:25)
    at __webpack_require__ (bootstrap:685)

Uncaught Error: Failed to import atoms module ./atoms/get-attribute.js. 
If running in dev mode, you need to run
`bazel build //javascript/node/selenium-webdriver/lib/atoms:get-attribute.js`
from the projectroot: Error: Cannot find module './atoms/get-attribute.js'
    at requireAtom (http.js:56)
    at Object../node_modules/selenium-webdriver/lib/http.js (http.js:35)
    at __webpack_require__ (bootstrap:685)
    at fn (bootstrap:59)
    at Object../node_modules/selenium-webdriver/http/index.js (index.js:29)
    at __webpack_require__ (bootstrap:685)
    at fn (bootstrap:59)
    at Object../node_modules/selenium-webdriver/index.js (index.js:25)
    at __webpack_require__ (bootstrap:685)
    at fn (bootstrap:59)

问题之所以发生是因为 webpack 只是因为我能够从电子快速启动代码中执行两个所需的库


webpack 配置如下:

const webpack = require('webpack')
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { spawn } = require('child_process')

const defaultInclude = path.resolve(__dirname, 'src')

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
      {
        test: /\.(png|jpe?g|gif|svg|eot|ttf|woff|woff2)$/,
        loader: 'url-loader',
        options: {
          limit: 8192,
        },
      },
      {
        test: /\.(js|jsx)$/,
        loader: "babel-loader",
        exclude: /node_modules/
      },
      {
        test: /\.(jpe?g|png|gif)$/,
        use: [{ loader: 'file-loader?name=img/[name]__[hash:base64:5].[ext]' }],
        include: defaultInclude
      }
    ]
  },
  target: 'node',
  plugins: [
    new HtmlWebpackPlugin(),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('development')
    })
  ],
  devtool: 'cheap-source-map',
  devServer: {
    contentBase: path.resolve(__dirname, 'dist'),
    stats: {
      colors: true,
      chunks: false,
      children: false
    },
    before() {
      spawn(
        'electron',
        ['.'],
        { shell: true, env: process.env, stdio: 'inherit' }
      )
      .on('close', code => process.exit(0))
      .on('error', spawnError => console.error(spawnError))
    }
  }
}

标签: node.jsselenium-webdriverwebpackelectronbazel

解决方案


推荐阅读