Search code examples
javascriptnode.jsrequirebrowserifybabeljs

Require not working the way I thought it would


So I have the following gulp task:

var gulp = require('gulp');
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var babelify = require("babelify");


gulp.task('make:flare-currency', function() {
  return browserify({entries: [
        'src/add-new-currency/flare-currency.js',
        'src/add-new-currency/currencies/set_up_currencies.js'
      ]})
      .transform(babelify)
      .bundle()
      .pipe(source('Flare-Currency.js'))
      .pipe(gulp.dest('dist/flare/currency/'));
});

I have the following package.json:

{
  "name": "flare-collection",
  "description": "collection of scripts for the RPG Maker MV system.",
  "version": "0.0.1",
  "dependencies": {
    "gulp": "3.9.0",
    "browserify": "11.2.0",
    "vinyl-source-stream": "1.1.0",
    "babelify": "6.4.0",
    "underscore.string": "2.3.0"
  }
}

When I try to do, inside: src/add_new_currencies/flare_currency.js

 var UnderScoreString = require('underscore.string/string');

I get:

Error: Cannot find module 'underscore.string/string' from '/Users/AdamBalan/Documents/Flare-Collection/src/add_new_currencies'

All of my require statements require that I do: var bla = require('some/file/to/include.js')

All of my classes (I am using es6) have, at the bottom of the file: module.exports = ClassName;

Why am I getting this error?

More importantly, why do I have to include the path to the js file?


Solution

  • underscore.string don't have a string submodule (function). If You want load all packages try _s = require('underscore.string'). If You want load single module like slugify try slugify = require('underscore.string/slugify').

    You don't need to include the path to the js file. If you select the directory, then node.js try to find index.js file.