Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

define is not defined Javascript Node

I am trying to run a Javascript file with Node to post blog updates to Tumblr.

So far in my main.js file I have this:

// Tumblr Information
var tumblr = require('./vendor/tumblr');
tumblr.request(require('request'));
var Blog;

var jq = require('./vendor/jquery-1.11.1.min');
var reqq = require('./vendor/require');
var inher = require('./vendor/inheritance');

var grammars = require('./tracery/grammar');

But then I receive the following error when I run node main.js

ReferenceError: define is not defined
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\
tracery\grammar.js:6:1)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\
main.js:11:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

And here is where the error is being thrown in the grammar.js file:

define(["./modifiers", "./node"], function(universalModifiers, Node) {'use strict';

    // other stuff...
});

I do not think a module is being loaded properly because it is stating the define function isn't defined. I believe this function comes from requireJS but I don't think I am loading it properly. Does anyone have any suggestions on why define might not be defined, or suggestions on how to load the correct module?

Thank you.

like image 933
leaflet757 Avatar asked Feb 11 '15 09:02

leaflet757


People also ask

How do you fix require is not defined in JS?

To solve the "ReferenceError require is not defined" error, remove the type property if it's set to module in your package. json file and rename any files that have a . mjs extension to have a . js extension.


1 Answers

It looks like you are trying to load a library that is coded according to the AMD (Asynchronous Module Definition) pattern, which Node does not support natively. It is perfectly possible for the author of a library to write such library so that it can be loaded in Node. The users of the library have to extend Node's module loading capabilities to understand AMD in order to load such library.

There are multiple loaders you can use, the one I use is amd-loader. Once installed with npm, you just add

require("amd-loader");

before you load any AMD module.

like image 156
Louis Avatar answered Sep 23 '22 10:09

Louis