for some reason, when I am trying to compress with webpack, my webdriverio can't find the /protocol and /command directories.
It is giving me this error:
Uncaught Error: ENOENT: no such file or directory, scandir '/protocol'
at Object.fs.readdirSync (fs.js:871:18)
at getImplementedCommands (chrome-extension://chldbooigfagkknimlieldoieoahlncn/vendor.npm.js:119349:39)
at Object.<anonymous> (chrome-extension://chldbooigfagkknimlieldoieoahlncn/vendor.npm.js:80520:66)
at __webpack_require__ (chrome-extension://chldbooigfagkknimlieldoieoahlncn/manifest.js:51:30)
at Object.618 (chrome-extension://chldbooigfagkknimlieldoieoahlncn/index.js:1445:20)
at __webpack_require__ (chrome-extension://chldbooigfagkknimlieldoieoahlncn/manifest.js:51:30)
at Object.617 (chrome-extension://chldbooigfagkknimlieldoieoahlncn/index.js:1409:16)
at __webpack_require__ (chrome-extension://chldbooigfagkknimlieldoieoahlncn/manifest.js:51:30)
at Object.616 (chrome-extension://chldbooigfagkknimlieldoieoahlncn/index.js:1329:14)
at __webpack_require__ (chrome-extension://chldbooigfagkknimlieldoieoahlncn/manifest.js:51:30)
The code in question is :
var dir = _path2.default.join(__dirname, '..', commandType);
var files = _fs2.default.readdirSync(dir);
Webpack has two directories called commands and protocol and when compress, it can't find them.
Here is my webpack config:
module.exports = {
// common options
// the grunt-webpack merges the "options" objects with each task config (nested)
options: {
stats: {
timings: true,
children: false
},
context: j( ".", "src" ),
output: {
// name each file by their entry module name
filename: "[name].js",
// don't use the webpack:// protocol in sourcemaps
devtoolModuleFilenameTemplate: "/[resource-path]"
},
// the entry module
entry: {
main: "main",
index: "index"
},
resolve: {
modulesDirectories: [
"web_modules",
"node_modules",
"bower_components"
],
alias: {
// folder aliases
"root" : pRoot,
"server" : pServer,
"styles" : pStyles,
"img" : pImages,
"templates" : pTemplates,
"bower" : pModulesBower,
// app folders
"addons" : r( pApp, "addons" ),
"authenticators" : r( pApp, "authenticators" ),
"authorizers" : r( pApp, "authorizers" ),
"config" : r( pApp, "config" ),
"initializers": r( pApp, "initializers" ),
"mixins" : r( pApp, "mixins" ),
"services" : r( pApp, "services" ),
"helpers" : r( pApp, "helpers" ),
"models" : r( pApp, "models" ),
"controllers" : r( pApp, "controllers" ),
"routes" : r( pApp, "routes" ),
"components" : r( pApp, "components" ),
"store" : r( pApp, "store" ),
"utils" : r( pApp, "utils" ),
"gui" : r( pApp, "gui" ),
"session-stores" : r( pApp, "session-stores" ),
"shim" : r( pRoot, "shim" ),
"config2" : r( pRoot, "config" ),
}
},
resolveLoader: {
root: pRoot,
modulesDirectories: [
"web_loaders",
"web_modules",
"node_loaders",
"node_modules"
]
},
plugins: [
// don't split the main module into multiple chunks
new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),
// split into chunks by module path
new SplitByPathPlugin([
{
name: "vendor.bower",
path: pModulesBower
},
{
name: "vendor.npm",
path: pModulesNpm
},
{
name: "templates",
path: pTemplates
}
]),
// don't include css stylesheets in the js bundle
cssExtractTextPlugin,
lessExtractTextPlugin,
// ignore l10n modules of momentjs
new webpack.IgnorePlugin( /^\.\/locale$/, /moment$/ )
]
},
// -----
// task configs
// -----
dev: {
output: {
path: "<%= dir.tmp_dev %>"
},
resolve: {
root: [pApp, pAppServer]
},
target: "node-webkit",
devtool: "source-map",
module: {
loaders: [].concat( [ loaderBabelDev, ], commonLoaders ),
rules: [
{
test: /\.js$/,
use: ["source-map-loader"],
enforce: "pre"
}
]
},
plugins: [
// NW.js package.json
new CopyWebpackPlugin([
{ from: r( pRoot, "package.json" ) },
{ from: r( pRoot, "drivers", "selenium-server-standalone-3.2.0.jar" ),
to: "drivers" },
{ from: r( pRoot, "drivers", "chromedriver_mac64" ), to: "drivers" },
{ from: r( pServer, "config"), to: "config"},
{ from: r( pServer, "data"), to: "data"},
]),
new WebpackShell({
//onBuildStart: ["npm run babel"],
onBuildExit:
[`chmod 0755 ${j(pBuildRoot, "drivers/chromedriver_mac64")}`],
}),
new HtmlWebpackPlugin({
inject: "head",
hash: false,
template: r( pRoot, "index.html" )
}),
new webpack.DefinePlugin({
DEBUG: true,
"process.env":{
"NODE_ENV": JSON.stringify("production")
}
}),
new NwjsPlugin({
files: "<%= dir.tmp_dev %>/**",
argv: "--remote-debugging-port=8888",
rerunOnExit: true,
log: true,
logStdOut: false,
logStdErr: true
}),
],
watch: true,
keepalive: true,
failOnError: false
},
prod: {
output: {
path: "<%= dir.tmp_prod %>"
},
resolve: {
root: pApp
},
target: "node-webkit",
module: {
loaders: [].concat( [ loaderBabelProd, ], commonLoaders, [
{
test: /\.svg$/,
loader: "svgo?" + JSON.stringify({
plugins: [
{ removeTitle: true },
{ removeUselessStrokeAndFill: false }
]
})
}
])
},
plugins: [
// NW.js package.json
new CopyWebpackPlugin([
{ from: r( pRoot, "package.json" ) },
{ from: r( pRoot, "drivers", "selenium-server-standalone-3.2.0.jar" ),
to: "drivers" },
{ from: r( pServer, "config"), to: "config"},
{ from: r( pServer, "data"), to: "data"},
]),
new WebpackShell({
onBuildStart: ["npm run babelprod"],
}),
new HtmlWebpackPlugin({
inject: "head",
hash: false,
template: r( pRoot, "index.html" )
}),
// use non-debug versions of ember and ember-data in production builds
new webpack.NormalModuleReplacementPlugin(
/\/ember\/ember\.debug\.js$/,
r( pModulesBower, "ember", "ember.prod.js" )
),
new webpack.NormalModuleReplacementPlugin(
/\/ember-data\/ember-data\.js$/,
r( pModulesBower, "ember-data", "ember-data.prod.js" )
),
// minify
new webpack.optimize.UglifyJsPlugin({
sourceMap: false,
compress: {
warnings: false
},
mangle: {
props: false,
except: ["function*"]
},
beautify: false,
screwIE8: true,
preserveComments: /(?:^!|@(?:license|preserve|cc_on))/
}),
// add license banner
new webpack.BannerPlugin([
"<%= main['display-name'] %>",
"@version v<%= package.version %>",
"@date <%= grunt.template.today('yyyy-mm-dd') %>",
"@copyright <%= package.author %>"
].join( "\n" ), {
entryOnly: true
})
],
// optimize css
lessLoader: {
lessPlugins: [
new LessPluginCleanCSS({
advanced: true
})
]
}
},....