How to use YUI3 on node?

Problem

I can’t get YUI3 to work on node.

I have installed all dependencies according to this site: http://github.com/yui/nodejs-yui3.

Here is my code:

var jsdom  = require("jsdom").jsdom,
window = jsdom("<html><head></head><body>hello world</body></html>").createWindow();

var puts = require("sys").puts;
var YUI = require("yui3").YUI;

var person = {
name: "Ajsie",
age: 25,
greet: function() {
puts("Hello World! My name is " + this.name + " and I am " + this.age + " years old")
}
}

result = YUI.Object(person);

puts(result);

Here is the output on terminal:

node.js:50
throw e;
^
TypeError: Object function () {
var i = 0,
Y = this,
args = arguments,
l = args.length,
gconf = (typeof YUI_config !== 'undefined') && YUI_config;

if (!(Y instanceof YUI)) {
Y = new YUI();
} else {
// set up the core environment
Y._init();
if (gconf) {
Y.applyConfig(gconf);
}
// bind the specified additional modules for this instance
if (!l) {
Y._setup();
}
}

if (l) {
for (; i < l; i++) {
Y.applyConfig(args[i]);
}

Y._setup();
}

return Y;
} has no method 'Object'
at Object.<anonymous> (/Volumes/Private/ajsie/Projects/icdev/javascript/node/object.js:15:14)
at Module._compile (node.js:324:23)
at Object..js (node.js:332:12)
at Module.load (node.js:254:25)
at Object.runMain (node.js:346:24)
at Array.<anonymous> (node.js:595:12)
at EventEmitter._tickCallback (node.js:42:22)
at node.js:607:9

It says “has no method “Object”.

What is the problem?

Problem courtesy of: never_had_a_name

Solution

The code should look like this:

var jsdom  = require("jsdom").jsdom,
window = jsdom("hello world").createWindow();

var puts = require("sys").puts;
var YUI = require("yui3").YUI;


YUI().use(function(Y){
var person = {
name: "Ajsie",
age: 25,
greet: function() {
puts("Hello World! My name is " + this.name + " and I am " + this.age + " years old");
}
}

var result = Y.Object(person);
puts(result);
});

Solution courtesy of: Fopfong

View additional discussion.

Show your support

Clapping shows how much you appreciated Jamie Munro’s story.