5

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
                })
            ]
        }
    },....
dom
  • 321
  • 2
  • 12

0 Answers0