Error when executing webpack from a gulp task











up vote
0
down vote

favorite












I'm learning webpack and would like to have a gulp task to run the webpack, so that I could later include this gulp task in my VS2017 build pipeline.



Here's the task named webpackBundlesJs that I've coded on gulpfile.js:



gulp.task(
"webpackBundlesJs",
function () {
var webpackStream = require("webpack-stream");
var webpackConfig = require("./React/webpack.dev.config");

return gulp
.src()
.pipe(webpackStream(webpackConfig))
.pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
}
);


When I execute this gulp task from VS2017 Task Runner Explorer I get the following output with error:



C:DesenvSGCSgc.WebSgc.Web> cmd.exe /c gulp -b "C:DesenvSGCSgc.WebSgc.Web" --color --gulpfile "C:DesenvSGCSgc.WebSgc.WebGulpfile.js" webpackBundlesJs
[17:29:13] Using gulpfile C:DesenvSGCSgc.WebSgc.WebGulpfile.js
[17:29:13] Starting 'webpackBundlesJs'...
(node:14360) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'default' of undefined
at C:DesenvSGCSgc.WebSgc.Webnode_modulesloader-runnerlibloadLoader.js:4:67
at <anonymous>
(node:14360) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:14360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
internal/streams/legacy.js:59
throw er; // Unhandled stream error in pipe.
^
Error: ./React/MenuSidebar/App.tsx
Module build failed (from ./node_modules/ts-loader/index.js):
(SystemJS) ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
Error: ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
Error loading C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js
Process terminated with code 1.


As you may see the problem seems to be in the path of the ts-loader that is wrong because it's assuming



C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


instead of the correct one at



C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


What do I need to do to correct this error ? where should I be loooking at ? webpack, or its npm plugin webpack-stream or tsconfig.json ?



Here's the relevant files' locations:




  • at folder C:DesenvSGCSgc.WebSgc.Web I have a VS2017 web project named Sgc.Web

  • at folder C:DesenvSGCSgc.WebSgc.Web I also have gulpfile.js and package.json

  • folder C:DesenvSGCSgc.WebSgc.Webnode_modules has the node modules

  • I'm using webpack to make the React JavaScript bundle of a React app; this React app MenuSidebar is located at folder C:DesenvSGCSgc.WebSgc.WebReactMenuSidebar

  • folder C:DesenvSGCSgc.WebSgc.WebReact contains the files tsconfig.json (to be used for React apps only), webpack.generic.config.js (generic webpack config settings) and webpack.dev.config.js (development specific webpack config settings to be merged with webpack.generic.config.js).


And now the above mentioned files contents:




  • C:DesenvSGCSgc.WebSgc.Webgulpfile.js



...
gulp.task(
"webpackBundlesJs",
function () {
var webpackStream = require("webpack-stream");
var webpackConfig = require("./React/webpack.dev.config");

return gulp
.src()
.pipe(webpackStream(webpackConfig))
.pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
}
);




  • C:DesenvSGCSgc.WebSgc.Webpackage.json:



{
...
"dependencies": {
...
"react": "16.5.0",
"react-dom": "16.5.0",
"redux": "4.0.0",
"react-redux": "5.0.7",
... }, "devDependencies": {
...
"babel-core": "6.26.3",
"babel-loader": "7.1.5",
"babel-preset-es2015": "6.24.1",
"babel-preset-react": "6.24.1",
...
"gulp": "3.9.1",
...
"systemjs-builder": "0.16.13",
"systemjs-plugin-text": "0.0.11",
"ts-loader": "5.1.0",
...
"typescript": "3.0.3",
"uglifyjs-webpack-plugin": "^2.0.1",
"webpack": "4.18.0",
"webpack-cli": "3.1.0",
"webpack-manifest-plugin": "2.0.4",
"webpack-merge": "^4.1.4",
"webpack-stream": "^5.1.1"
}
}




  • C:DesenvSGCSgc.WebSgc.WebReacttsconfig.json



 {
"compilerOptions": {
"target": "es5",
"lib": [ "es5", "dom", "scripthost", "es2015" ],
"module": "commonjs",
"moduleResolution": "node",
"jsx": "react",
"sourceMap": true,
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false
},
"exclude": [
"../node_modules"
]
}




  • C:DesenvSGCSgc.WebSgc.WebReactwebpack.generic.config.js



const path = require("path"); 
const ManifestPlugin = require("webpack-manifest-plugin");

function getGenericConfig() {
let genericConfig = {};

genericConfig.entry = {
"MenuSidebarReact": "./React/MenuSidebar/App.tsx"
};

genericConfig.output = {
"path": path.resolve(__dirname, "../Scripts/bundles"),
"libraryTarget": "var",
"library": "lib[name]"
};

// only output when errors happen
genericConfig.stats = "errors-only",

genericConfig.resolve = {
"extensions": [".ts", ".tsx", ".js"]
};

//#region Optimization (chunks)

const genericReact = {
"chunks": "all",
"name": "GenericReact",
test(chunks) {
...
};
return checkResource(chunks);
},
"reuseExistingChunk": true,
"enforce": true
};

const vendorReact = {
chunks: "all",
name: "VendorReact",
test(chunks) {
var checkResource = null;

checkResource = function (value) {
...
return false;
};

return checkResource(chunks);
},
reuseExistingChunk: true,
enforce: true
};

const vendorRedux = {
chunks: "all",
name: "VendorRedux",
test(chunks) {
var checkResource = null;

checkResource = function (value) {
...
};

return checkResource(chunks);
},
reuseExistingChunk: true,
enforce: true
};

genericConfig.optimization = {
"splitChunks": {
"cacheGroups": {
"GenericReact": genericReact,
"VendorReact": vendorReact,
"VendorRedux": vendorRedux
}
}
};

//#endregion

//#region Modules

const tsLoader = {
"test": /.tsx?$/,
"loader": "ts-loader"
};

const babelLoader = {
"test": /.(js|jsx)$/,
"exclude": /node_modules/,
"use": [{
"loader": "babel-loader",
"options": {
"presets": ["es2015", "react"],
"cacheDirectory": true
}
}]
};

genericConfig.module = {
"rules": [tsLoader, babelLoader]
};

//#endregion

//#region Plugins

const manifestPlugin = new ManifestPlugin({
"fileName": "bustersWebpackJs.json",
"map": funcManifestPluginCorrectKeysValues
});

genericConfig.plugins = [manifestPlugin];

//#endregion

return genericConfig; }

module.exports = getGenericConfig();




  • C:DesenvSGCSgc.WebSgc.WebReactwebpack.dev.config.js:



const merge = require("webpack-merge");
const genericConfig = require("./webpack.generic.config.js");

/**
* Get the specific webpack configuration object for a DEVelopment build, that makes only non minified JS files.
* @returns {Object} dev specific webpack config object.
*/
function getNonMinifiedConfig() {
let nonMinConfig = {};

// by default this option ensures that files won't be minified !
nonMinConfig.mode = "development";

nonMinConfig.output = {};
nonMinConfig.output.filename = "[name].js?[chunkhash]";
nonMinConfig.output.chunkFilename = nonMinConfig.output.filename;

return nonMinConfig;
}

module.exports = merge(genericConfig, getNonMinifiedConfig());



any idea or hint as to where is the problem is deeply appreciated.
Thanks in advance,
Miguel.










share|improve this question


























    up vote
    0
    down vote

    favorite












    I'm learning webpack and would like to have a gulp task to run the webpack, so that I could later include this gulp task in my VS2017 build pipeline.



    Here's the task named webpackBundlesJs that I've coded on gulpfile.js:



    gulp.task(
    "webpackBundlesJs",
    function () {
    var webpackStream = require("webpack-stream");
    var webpackConfig = require("./React/webpack.dev.config");

    return gulp
    .src()
    .pipe(webpackStream(webpackConfig))
    .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
    }
    );


    When I execute this gulp task from VS2017 Task Runner Explorer I get the following output with error:



    C:DesenvSGCSgc.WebSgc.Web> cmd.exe /c gulp -b "C:DesenvSGCSgc.WebSgc.Web" --color --gulpfile "C:DesenvSGCSgc.WebSgc.WebGulpfile.js" webpackBundlesJs
    [17:29:13] Using gulpfile C:DesenvSGCSgc.WebSgc.WebGulpfile.js
    [17:29:13] Starting 'webpackBundlesJs'...
    (node:14360) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'default' of undefined
    at C:DesenvSGCSgc.WebSgc.Webnode_modulesloader-runnerlibloadLoader.js:4:67
    at <anonymous>
    (node:14360) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
    (node:14360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    internal/streams/legacy.js:59
    throw er; // Unhandled stream error in pipe.
    ^
    Error: ./React/MenuSidebar/App.tsx
    Module build failed (from ./node_modules/ts-loader/index.js):
    (SystemJS) ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
    Error: ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
    Error loading C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js
    Process terminated with code 1.


    As you may see the problem seems to be in the path of the ts-loader that is wrong because it's assuming



    C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


    instead of the correct one at



    C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


    What do I need to do to correct this error ? where should I be loooking at ? webpack, or its npm plugin webpack-stream or tsconfig.json ?



    Here's the relevant files' locations:




    • at folder C:DesenvSGCSgc.WebSgc.Web I have a VS2017 web project named Sgc.Web

    • at folder C:DesenvSGCSgc.WebSgc.Web I also have gulpfile.js and package.json

    • folder C:DesenvSGCSgc.WebSgc.Webnode_modules has the node modules

    • I'm using webpack to make the React JavaScript bundle of a React app; this React app MenuSidebar is located at folder C:DesenvSGCSgc.WebSgc.WebReactMenuSidebar

    • folder C:DesenvSGCSgc.WebSgc.WebReact contains the files tsconfig.json (to be used for React apps only), webpack.generic.config.js (generic webpack config settings) and webpack.dev.config.js (development specific webpack config settings to be merged with webpack.generic.config.js).


    And now the above mentioned files contents:




    • C:DesenvSGCSgc.WebSgc.Webgulpfile.js



    ...
    gulp.task(
    "webpackBundlesJs",
    function () {
    var webpackStream = require("webpack-stream");
    var webpackConfig = require("./React/webpack.dev.config");

    return gulp
    .src()
    .pipe(webpackStream(webpackConfig))
    .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
    }
    );




    • C:DesenvSGCSgc.WebSgc.Webpackage.json:



    {
    ...
    "dependencies": {
    ...
    "react": "16.5.0",
    "react-dom": "16.5.0",
    "redux": "4.0.0",
    "react-redux": "5.0.7",
    ... }, "devDependencies": {
    ...
    "babel-core": "6.26.3",
    "babel-loader": "7.1.5",
    "babel-preset-es2015": "6.24.1",
    "babel-preset-react": "6.24.1",
    ...
    "gulp": "3.9.1",
    ...
    "systemjs-builder": "0.16.13",
    "systemjs-plugin-text": "0.0.11",
    "ts-loader": "5.1.0",
    ...
    "typescript": "3.0.3",
    "uglifyjs-webpack-plugin": "^2.0.1",
    "webpack": "4.18.0",
    "webpack-cli": "3.1.0",
    "webpack-manifest-plugin": "2.0.4",
    "webpack-merge": "^4.1.4",
    "webpack-stream": "^5.1.1"
    }
    }




    • C:DesenvSGCSgc.WebSgc.WebReacttsconfig.json



     {
    "compilerOptions": {
    "target": "es5",
    "lib": [ "es5", "dom", "scripthost", "es2015" ],
    "module": "commonjs",
    "moduleResolution": "node",
    "jsx": "react",
    "sourceMap": true,
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false
    },
    "exclude": [
    "../node_modules"
    ]
    }




    • C:DesenvSGCSgc.WebSgc.WebReactwebpack.generic.config.js



    const path = require("path"); 
    const ManifestPlugin = require("webpack-manifest-plugin");

    function getGenericConfig() {
    let genericConfig = {};

    genericConfig.entry = {
    "MenuSidebarReact": "./React/MenuSidebar/App.tsx"
    };

    genericConfig.output = {
    "path": path.resolve(__dirname, "../Scripts/bundles"),
    "libraryTarget": "var",
    "library": "lib[name]"
    };

    // only output when errors happen
    genericConfig.stats = "errors-only",

    genericConfig.resolve = {
    "extensions": [".ts", ".tsx", ".js"]
    };

    //#region Optimization (chunks)

    const genericReact = {
    "chunks": "all",
    "name": "GenericReact",
    test(chunks) {
    ...
    };
    return checkResource(chunks);
    },
    "reuseExistingChunk": true,
    "enforce": true
    };

    const vendorReact = {
    chunks: "all",
    name: "VendorReact",
    test(chunks) {
    var checkResource = null;

    checkResource = function (value) {
    ...
    return false;
    };

    return checkResource(chunks);
    },
    reuseExistingChunk: true,
    enforce: true
    };

    const vendorRedux = {
    chunks: "all",
    name: "VendorRedux",
    test(chunks) {
    var checkResource = null;

    checkResource = function (value) {
    ...
    };

    return checkResource(chunks);
    },
    reuseExistingChunk: true,
    enforce: true
    };

    genericConfig.optimization = {
    "splitChunks": {
    "cacheGroups": {
    "GenericReact": genericReact,
    "VendorReact": vendorReact,
    "VendorRedux": vendorRedux
    }
    }
    };

    //#endregion

    //#region Modules

    const tsLoader = {
    "test": /.tsx?$/,
    "loader": "ts-loader"
    };

    const babelLoader = {
    "test": /.(js|jsx)$/,
    "exclude": /node_modules/,
    "use": [{
    "loader": "babel-loader",
    "options": {
    "presets": ["es2015", "react"],
    "cacheDirectory": true
    }
    }]
    };

    genericConfig.module = {
    "rules": [tsLoader, babelLoader]
    };

    //#endregion

    //#region Plugins

    const manifestPlugin = new ManifestPlugin({
    "fileName": "bustersWebpackJs.json",
    "map": funcManifestPluginCorrectKeysValues
    });

    genericConfig.plugins = [manifestPlugin];

    //#endregion

    return genericConfig; }

    module.exports = getGenericConfig();




    • C:DesenvSGCSgc.WebSgc.WebReactwebpack.dev.config.js:



    const merge = require("webpack-merge");
    const genericConfig = require("./webpack.generic.config.js");

    /**
    * Get the specific webpack configuration object for a DEVelopment build, that makes only non minified JS files.
    * @returns {Object} dev specific webpack config object.
    */
    function getNonMinifiedConfig() {
    let nonMinConfig = {};

    // by default this option ensures that files won't be minified !
    nonMinConfig.mode = "development";

    nonMinConfig.output = {};
    nonMinConfig.output.filename = "[name].js?[chunkhash]";
    nonMinConfig.output.chunkFilename = nonMinConfig.output.filename;

    return nonMinConfig;
    }

    module.exports = merge(genericConfig, getNonMinifiedConfig());



    any idea or hint as to where is the problem is deeply appreciated.
    Thanks in advance,
    Miguel.










    share|improve this question
























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I'm learning webpack and would like to have a gulp task to run the webpack, so that I could later include this gulp task in my VS2017 build pipeline.



      Here's the task named webpackBundlesJs that I've coded on gulpfile.js:



      gulp.task(
      "webpackBundlesJs",
      function () {
      var webpackStream = require("webpack-stream");
      var webpackConfig = require("./React/webpack.dev.config");

      return gulp
      .src()
      .pipe(webpackStream(webpackConfig))
      .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
      }
      );


      When I execute this gulp task from VS2017 Task Runner Explorer I get the following output with error:



      C:DesenvSGCSgc.WebSgc.Web> cmd.exe /c gulp -b "C:DesenvSGCSgc.WebSgc.Web" --color --gulpfile "C:DesenvSGCSgc.WebSgc.WebGulpfile.js" webpackBundlesJs
      [17:29:13] Using gulpfile C:DesenvSGCSgc.WebSgc.WebGulpfile.js
      [17:29:13] Starting 'webpackBundlesJs'...
      (node:14360) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'default' of undefined
      at C:DesenvSGCSgc.WebSgc.Webnode_modulesloader-runnerlibloadLoader.js:4:67
      at <anonymous>
      (node:14360) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
      (node:14360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
      internal/streams/legacy.js:59
      throw er; // Unhandled stream error in pipe.
      ^
      Error: ./React/MenuSidebar/App.tsx
      Module build failed (from ./node_modules/ts-loader/index.js):
      (SystemJS) ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
      Error: ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
      Error loading C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js
      Process terminated with code 1.


      As you may see the problem seems to be in the path of the ts-loader that is wrong because it's assuming



      C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


      instead of the correct one at



      C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


      What do I need to do to correct this error ? where should I be loooking at ? webpack, or its npm plugin webpack-stream or tsconfig.json ?



      Here's the relevant files' locations:




      • at folder C:DesenvSGCSgc.WebSgc.Web I have a VS2017 web project named Sgc.Web

      • at folder C:DesenvSGCSgc.WebSgc.Web I also have gulpfile.js and package.json

      • folder C:DesenvSGCSgc.WebSgc.Webnode_modules has the node modules

      • I'm using webpack to make the React JavaScript bundle of a React app; this React app MenuSidebar is located at folder C:DesenvSGCSgc.WebSgc.WebReactMenuSidebar

      • folder C:DesenvSGCSgc.WebSgc.WebReact contains the files tsconfig.json (to be used for React apps only), webpack.generic.config.js (generic webpack config settings) and webpack.dev.config.js (development specific webpack config settings to be merged with webpack.generic.config.js).


      And now the above mentioned files contents:




      • C:DesenvSGCSgc.WebSgc.Webgulpfile.js



      ...
      gulp.task(
      "webpackBundlesJs",
      function () {
      var webpackStream = require("webpack-stream");
      var webpackConfig = require("./React/webpack.dev.config");

      return gulp
      .src()
      .pipe(webpackStream(webpackConfig))
      .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
      }
      );




      • C:DesenvSGCSgc.WebSgc.Webpackage.json:



      {
      ...
      "dependencies": {
      ...
      "react": "16.5.0",
      "react-dom": "16.5.0",
      "redux": "4.0.0",
      "react-redux": "5.0.7",
      ... }, "devDependencies": {
      ...
      "babel-core": "6.26.3",
      "babel-loader": "7.1.5",
      "babel-preset-es2015": "6.24.1",
      "babel-preset-react": "6.24.1",
      ...
      "gulp": "3.9.1",
      ...
      "systemjs-builder": "0.16.13",
      "systemjs-plugin-text": "0.0.11",
      "ts-loader": "5.1.0",
      ...
      "typescript": "3.0.3",
      "uglifyjs-webpack-plugin": "^2.0.1",
      "webpack": "4.18.0",
      "webpack-cli": "3.1.0",
      "webpack-manifest-plugin": "2.0.4",
      "webpack-merge": "^4.1.4",
      "webpack-stream": "^5.1.1"
      }
      }




      • C:DesenvSGCSgc.WebSgc.WebReacttsconfig.json



       {
      "compilerOptions": {
      "target": "es5",
      "lib": [ "es5", "dom", "scripthost", "es2015" ],
      "module": "commonjs",
      "moduleResolution": "node",
      "jsx": "react",
      "sourceMap": true,
      "noImplicitAny": false,
      "noEmitOnError": true,
      "removeComments": false
      },
      "exclude": [
      "../node_modules"
      ]
      }




      • C:DesenvSGCSgc.WebSgc.WebReactwebpack.generic.config.js



      const path = require("path"); 
      const ManifestPlugin = require("webpack-manifest-plugin");

      function getGenericConfig() {
      let genericConfig = {};

      genericConfig.entry = {
      "MenuSidebarReact": "./React/MenuSidebar/App.tsx"
      };

      genericConfig.output = {
      "path": path.resolve(__dirname, "../Scripts/bundles"),
      "libraryTarget": "var",
      "library": "lib[name]"
      };

      // only output when errors happen
      genericConfig.stats = "errors-only",

      genericConfig.resolve = {
      "extensions": [".ts", ".tsx", ".js"]
      };

      //#region Optimization (chunks)

      const genericReact = {
      "chunks": "all",
      "name": "GenericReact",
      test(chunks) {
      ...
      };
      return checkResource(chunks);
      },
      "reuseExistingChunk": true,
      "enforce": true
      };

      const vendorReact = {
      chunks: "all",
      name: "VendorReact",
      test(chunks) {
      var checkResource = null;

      checkResource = function (value) {
      ...
      return false;
      };

      return checkResource(chunks);
      },
      reuseExistingChunk: true,
      enforce: true
      };

      const vendorRedux = {
      chunks: "all",
      name: "VendorRedux",
      test(chunks) {
      var checkResource = null;

      checkResource = function (value) {
      ...
      };

      return checkResource(chunks);
      },
      reuseExistingChunk: true,
      enforce: true
      };

      genericConfig.optimization = {
      "splitChunks": {
      "cacheGroups": {
      "GenericReact": genericReact,
      "VendorReact": vendorReact,
      "VendorRedux": vendorRedux
      }
      }
      };

      //#endregion

      //#region Modules

      const tsLoader = {
      "test": /.tsx?$/,
      "loader": "ts-loader"
      };

      const babelLoader = {
      "test": /.(js|jsx)$/,
      "exclude": /node_modules/,
      "use": [{
      "loader": "babel-loader",
      "options": {
      "presets": ["es2015", "react"],
      "cacheDirectory": true
      }
      }]
      };

      genericConfig.module = {
      "rules": [tsLoader, babelLoader]
      };

      //#endregion

      //#region Plugins

      const manifestPlugin = new ManifestPlugin({
      "fileName": "bustersWebpackJs.json",
      "map": funcManifestPluginCorrectKeysValues
      });

      genericConfig.plugins = [manifestPlugin];

      //#endregion

      return genericConfig; }

      module.exports = getGenericConfig();




      • C:DesenvSGCSgc.WebSgc.WebReactwebpack.dev.config.js:



      const merge = require("webpack-merge");
      const genericConfig = require("./webpack.generic.config.js");

      /**
      * Get the specific webpack configuration object for a DEVelopment build, that makes only non minified JS files.
      * @returns {Object} dev specific webpack config object.
      */
      function getNonMinifiedConfig() {
      let nonMinConfig = {};

      // by default this option ensures that files won't be minified !
      nonMinConfig.mode = "development";

      nonMinConfig.output = {};
      nonMinConfig.output.filename = "[name].js?[chunkhash]";
      nonMinConfig.output.chunkFilename = nonMinConfig.output.filename;

      return nonMinConfig;
      }

      module.exports = merge(genericConfig, getNonMinifiedConfig());



      any idea or hint as to where is the problem is deeply appreciated.
      Thanks in advance,
      Miguel.










      share|improve this question













      I'm learning webpack and would like to have a gulp task to run the webpack, so that I could later include this gulp task in my VS2017 build pipeline.



      Here's the task named webpackBundlesJs that I've coded on gulpfile.js:



      gulp.task(
      "webpackBundlesJs",
      function () {
      var webpackStream = require("webpack-stream");
      var webpackConfig = require("./React/webpack.dev.config");

      return gulp
      .src()
      .pipe(webpackStream(webpackConfig))
      .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
      }
      );


      When I execute this gulp task from VS2017 Task Runner Explorer I get the following output with error:



      C:DesenvSGCSgc.WebSgc.Web> cmd.exe /c gulp -b "C:DesenvSGCSgc.WebSgc.Web" --color --gulpfile "C:DesenvSGCSgc.WebSgc.WebGulpfile.js" webpackBundlesJs
      [17:29:13] Using gulpfile C:DesenvSGCSgc.WebSgc.WebGulpfile.js
      [17:29:13] Starting 'webpackBundlesJs'...
      (node:14360) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'default' of undefined
      at C:DesenvSGCSgc.WebSgc.Webnode_modulesloader-runnerlibloadLoader.js:4:67
      at <anonymous>
      (node:14360) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
      (node:14360) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
      internal/streams/legacy.js:59
      throw er; // Unhandled stream error in pipe.
      ^
      Error: ./React/MenuSidebar/App.tsx
      Module build failed (from ./node_modules/ts-loader/index.js):
      (SystemJS) ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
      Error: ENOENT: no such file or directory, open 'C:DesenvSGCSgc.WebSgc.WebC:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js'
      Error loading C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js
      Process terminated with code 1.


      As you may see the problem seems to be in the path of the ts-loader that is wrong because it's assuming



      C:/Desenv/SGC/Sgc.Web/Sgc.Web/C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


      instead of the correct one at



      C:DesenvSGCSgc.WebSgc.Webnode_modulests-loaderindex.js


      What do I need to do to correct this error ? where should I be loooking at ? webpack, or its npm plugin webpack-stream or tsconfig.json ?



      Here's the relevant files' locations:




      • at folder C:DesenvSGCSgc.WebSgc.Web I have a VS2017 web project named Sgc.Web

      • at folder C:DesenvSGCSgc.WebSgc.Web I also have gulpfile.js and package.json

      • folder C:DesenvSGCSgc.WebSgc.Webnode_modules has the node modules

      • I'm using webpack to make the React JavaScript bundle of a React app; this React app MenuSidebar is located at folder C:DesenvSGCSgc.WebSgc.WebReactMenuSidebar

      • folder C:DesenvSGCSgc.WebSgc.WebReact contains the files tsconfig.json (to be used for React apps only), webpack.generic.config.js (generic webpack config settings) and webpack.dev.config.js (development specific webpack config settings to be merged with webpack.generic.config.js).


      And now the above mentioned files contents:




      • C:DesenvSGCSgc.WebSgc.Webgulpfile.js



      ...
      gulp.task(
      "webpackBundlesJs",
      function () {
      var webpackStream = require("webpack-stream");
      var webpackConfig = require("./React/webpack.dev.config");

      return gulp
      .src()
      .pipe(webpackStream(webpackConfig))
      .pipe(gulp.dest("Scripts/bundles/", { "mode": "0777" }));
      }
      );




      • C:DesenvSGCSgc.WebSgc.Webpackage.json:



      {
      ...
      "dependencies": {
      ...
      "react": "16.5.0",
      "react-dom": "16.5.0",
      "redux": "4.0.0",
      "react-redux": "5.0.7",
      ... }, "devDependencies": {
      ...
      "babel-core": "6.26.3",
      "babel-loader": "7.1.5",
      "babel-preset-es2015": "6.24.1",
      "babel-preset-react": "6.24.1",
      ...
      "gulp": "3.9.1",
      ...
      "systemjs-builder": "0.16.13",
      "systemjs-plugin-text": "0.0.11",
      "ts-loader": "5.1.0",
      ...
      "typescript": "3.0.3",
      "uglifyjs-webpack-plugin": "^2.0.1",
      "webpack": "4.18.0",
      "webpack-cli": "3.1.0",
      "webpack-manifest-plugin": "2.0.4",
      "webpack-merge": "^4.1.4",
      "webpack-stream": "^5.1.1"
      }
      }




      • C:DesenvSGCSgc.WebSgc.WebReacttsconfig.json



       {
      "compilerOptions": {
      "target": "es5",
      "lib": [ "es5", "dom", "scripthost", "es2015" ],
      "module": "commonjs",
      "moduleResolution": "node",
      "jsx": "react",
      "sourceMap": true,
      "noImplicitAny": false,
      "noEmitOnError": true,
      "removeComments": false
      },
      "exclude": [
      "../node_modules"
      ]
      }




      • C:DesenvSGCSgc.WebSgc.WebReactwebpack.generic.config.js



      const path = require("path"); 
      const ManifestPlugin = require("webpack-manifest-plugin");

      function getGenericConfig() {
      let genericConfig = {};

      genericConfig.entry = {
      "MenuSidebarReact": "./React/MenuSidebar/App.tsx"
      };

      genericConfig.output = {
      "path": path.resolve(__dirname, "../Scripts/bundles"),
      "libraryTarget": "var",
      "library": "lib[name]"
      };

      // only output when errors happen
      genericConfig.stats = "errors-only",

      genericConfig.resolve = {
      "extensions": [".ts", ".tsx", ".js"]
      };

      //#region Optimization (chunks)

      const genericReact = {
      "chunks": "all",
      "name": "GenericReact",
      test(chunks) {
      ...
      };
      return checkResource(chunks);
      },
      "reuseExistingChunk": true,
      "enforce": true
      };

      const vendorReact = {
      chunks: "all",
      name: "VendorReact",
      test(chunks) {
      var checkResource = null;

      checkResource = function (value) {
      ...
      return false;
      };

      return checkResource(chunks);
      },
      reuseExistingChunk: true,
      enforce: true
      };

      const vendorRedux = {
      chunks: "all",
      name: "VendorRedux",
      test(chunks) {
      var checkResource = null;

      checkResource = function (value) {
      ...
      };

      return checkResource(chunks);
      },
      reuseExistingChunk: true,
      enforce: true
      };

      genericConfig.optimization = {
      "splitChunks": {
      "cacheGroups": {
      "GenericReact": genericReact,
      "VendorReact": vendorReact,
      "VendorRedux": vendorRedux
      }
      }
      };

      //#endregion

      //#region Modules

      const tsLoader = {
      "test": /.tsx?$/,
      "loader": "ts-loader"
      };

      const babelLoader = {
      "test": /.(js|jsx)$/,
      "exclude": /node_modules/,
      "use": [{
      "loader": "babel-loader",
      "options": {
      "presets": ["es2015", "react"],
      "cacheDirectory": true
      }
      }]
      };

      genericConfig.module = {
      "rules": [tsLoader, babelLoader]
      };

      //#endregion

      //#region Plugins

      const manifestPlugin = new ManifestPlugin({
      "fileName": "bustersWebpackJs.json",
      "map": funcManifestPluginCorrectKeysValues
      });

      genericConfig.plugins = [manifestPlugin];

      //#endregion

      return genericConfig; }

      module.exports = getGenericConfig();




      • C:DesenvSGCSgc.WebSgc.WebReactwebpack.dev.config.js:



      const merge = require("webpack-merge");
      const genericConfig = require("./webpack.generic.config.js");

      /**
      * Get the specific webpack configuration object for a DEVelopment build, that makes only non minified JS files.
      * @returns {Object} dev specific webpack config object.
      */
      function getNonMinifiedConfig() {
      let nonMinConfig = {};

      // by default this option ensures that files won't be minified !
      nonMinConfig.mode = "development";

      nonMinConfig.output = {};
      nonMinConfig.output.filename = "[name].js?[chunkhash]";
      nonMinConfig.output.chunkFilename = nonMinConfig.output.filename;

      return nonMinConfig;
      }

      module.exports = merge(genericConfig, getNonMinifiedConfig());



      any idea or hint as to where is the problem is deeply appreciated.
      Thanks in advance,
      Miguel.







      reactjs typescript webpack gulp






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 9 at 18:25









      Miguel Goncalves

      2116




      2116





























          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53231397%2ferror-when-executing-webpack-from-a-gulp-task%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.





          Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


          Please pay close attention to the following guidance:


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53231397%2ferror-when-executing-webpack-from-a-gulp-task%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Schultheiß

          Verwaltungsgliederung Dänemarks

          Liste der Kulturdenkmale in Wilsdruff