abh*_*ake 5 node.js selenium-webdriver webpack bazel electron
对于我的电子应用程序项目(使用的样板),我想使用selenium-webdriver和chromedriver执行一些 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
Run Code Online (Sandbox Code Playgroud)
应用程序错误:
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)
Run Code Online (Sandbox Code Playgroud)
这个问题是因为 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))
}
}
}
Run Code Online (Sandbox Code Playgroud)
该问题似乎与 Webpack 配置有关,警告消息表明存在一些无法解决的关键依赖项。您可以尝试在Webpack配置中添加以下代码来解决该问题:
node: {
__dirname: true,
__filename: true,
},
Run Code Online (Sandbox Code Playgroud)
这应该修复与请求依赖项为表达式相关的关键依赖项警告。
关于缺少模块的错误,似乎存在一些与 Selenium Webdriver 使用的 Bazel 构建系统相关的问题。一种解决方法是使用以下命令手动构建所需的模块:
bazel build /javascript/node/selenium-webdriver/lib/atoms:get-attribute.js
Run Code Online (Sandbox Code Playgroud)
这应该在 bazel-bin 目录中创建缺少的模块,然后您可以将其复制到项目的 node_modules 目录中的适当位置。
另一种可能的解决方案是尝试使用不存在这些问题的不同版本的 Selenium Webdriver。您可以查看不同版本的发行说明,看看它们是否提到了与 Bazel 或 Webpack 相关的问题。您可以使用 npm 安装特定版本的 Selenium Webdriver,如下所示:
npm install selenium-webdriver@3.141.0
Run Code Online (Sandbox Code Playgroud)
将3.141.0替换为您要使用的版本号。
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |