Can't walk dependency graph
Asked Answered
O

2

8

My Javascript build process ends up inserting the keyword require() in the file. This is not supported in client side and causes a console error. I have added browserify per other SO answers, however, I am in turn getting another error (below).

Additional Information:

I am using:

  1. Gulp 4
  2. Node (v14.2.0)

Error:

[16:03:55] Using gulpfile /mnt/c/code/mutationObserver/gulpfile.js
[16:03:55] Starting 'default'...
[16:03:55] Starting 'clean'...
[16:03:55] Finished 'clean' after 10 ms
[16:03:55] Starting 'html'...
[16:03:55] Starting 'js'...
[16:03:55] Starting 'css'...
[16:03:55] Finished 'html' after 46 ms
[16:03:55] Finished 'css' after 51 ms
[16:03:55] 'js' errored after 54 ms
[16:03:55] Error: Can't walk dependency graph: Cannot find module '/mnt/c/code/mutationObserver/src/js/*.js' from '/mnt/c/code/mutationObserver/src/js/_fake.js'
    required by /mnt/c/code/mutationObserver/src/js/_fake.js
    at /mnt/c/code/mutationObserver/node_modules/resolve/lib/async.js:136:35
    at load (/mnt/c/code/mutationObserver/node_modules/resolve/lib/async.js:155:43)
    at onex (/mnt/c/code/mutationObserver/node_modules/resolve/lib/async.js:180:17)
    at /mnt/c/code/mutationObserver/node_modules/resolve/lib/async.js:15:69
    at FSReqCallback.oncomplete (fs.js:175:21)
[16:03:55] 'default' errored after 69 ms

My entire Gulpfile.js is as follows:

const { series, parallel, watch, src, dest } = require("gulp");
const plumber = require("gulp-plumber");
const del = require("del");
const concat = require("gulp-concat");
const babel = require("gulp-babel");
const sass = require("gulp-sass");
const browserSync = require("browser-sync").create();
const browserify = require('browserify')
const source = require('vinyl-source-stream')


function html() {
  return src("./src/*.html").pipe(dest("./dist"));
}

function css() {
  return src("./src/css/style.scss")
    .pipe(plumber())
    .pipe(sass().on("error", sass.logError))
    .pipe(dest("./dist/css"));
}

function js() {
  return browserify("./src/js/*.js")
    .bundle()
    .pipe(source("main.js"))
    .pipe(plumber())
    .pipe(
      babel({
        presets: ["@babel/env"],
        plugins: ["@babel/transform-runtime"],
      })
    )
    .pipe(dest("./dist/js"));
}

function clean() {
  return del(["./dist"]);
}

function watchFor() {
  browserSync.init({
    server: {
      baseDir: "./dist/",
    },
  });

  // first rerun the function that distributed the css files, then reload the browser
  watch("./src/css/**/*.scss").on("change", css);
  watch("./dist/css/*.css").on("change", browserSync.reload);

  // first rerun the function that distributed the javascript files, then reload the browser
  watch("./src/js/*.js").on("change", js);
  watch("./dist/js/*.js").on("change", browserSync.reload);

  // first rerun the function that writes to the dist folder, then reload the browser
  watch("./src/*.html").on("change", html);
  watch("./dist/*.html").on("change", browserSync.reload);
}

exports.clean = clean;
exports.css = css;
exports.js = js;
exports.html = html;
exports.watch = watch;
exports.default = series(clean, parallel(html, js, css), watchFor);

Orrin answered 21/8, 2020 at 20:17 Comment(1)
I ended up switching to Webpack. I believe that is a better tool for (at least) Javascript bundling.Orrin
H
10

I had the same error. This error means that it cannot find the required js file. Make sure that the file is in the correct folder, as specified in "required", and if it's in the same folder, you might need to add ./ .

browserify main.js -o bundle.js

Error: Can't walk dependency graph: Cannot find module 'srt' from 'C:\code\html1\main.js'

In my main.js error, I changed:

var srt = require('srt');

to:

var srt = require('./srt');

And then it worked.

Heartrending answered 29/12, 2020 at 22:12 Comment(0)
A
1

My case was slightly different. I had just moved from Windows to Ubuntu (via WSL).

Double checked the package was installed, removed and re-installed locally and globally, still cannot find module.

This previously worked when on windows:

window.Example = require('Example');

Turns out Linux case sensitivity meant it needed to be:

window.Example = require('example');

Aide answered 12/8, 2022 at 10:10 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.