Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Problem using gauss with NODE_MODULE_CONTEXTS=0 #6

Closed
rafaparafernalia opened this Issue · 5 comments

2 participants

@rafaparafernalia

Hello,

I am using your library and I detected a problem. When I use your library in a file, it automatically modify the prototype of built-in Array object, without my permission ;)

I was researching and I found that the problem is that NODE_MODULE_CONTEXTS is zero for default so, your library overwrite Array built-in.

If you put the following content in a file, for example prueba.js:
var gauss = require("gauss");

var arreglo=[1,2];
for(var i in arreglo){
console.log(i);
}

You will see that shows the properties that you add to Array. If you put the lines in the REPL, the program will be ok, this happen because the variable NODE_MODULE_CONTEXTS is set different in both cases. See: joyent/node#771

I fixed the problem adding,
In vector.js, line 6:
var Array=function () {};

In timeseries.js, line 6:
var Array = require('./vector');

Best regards,

@rafaparafernalia

Hello,

Sorry, I don't fix the problem, clone and copy are not running correctly.

Best regards,

@wayoutmind
Owner

I am aware of this and will investigate, some of this is beyond the control of the module, and is in the nature of node/JavaScript being a dynamic language. A temporary fix would be to force NODE_MODULE_CONTEXTS=1: NODE_MODULE_CONTEXTS=1 node my_gauss_client.js.

However, this is less than ideal. The key thing I want to maintain is the ability to access members of the Vector like an array (For example: new gauss.Vector(1, 2, 3)[0] will return 1), regardless if we are monkey patching or not.

@wayoutmind
Owner

Also, what version of Node are you using? As of 0.6, I believe NODE_MODULE_CONTEXTS=0 across the board. Starting the REPL with NODE_MODULE_CONTEXTS=1 disables the use of any CommonJS external modules, so using Gauss or any module for that matter from the REPL won't work.

`v0.6.10
fredricks-macbook-pro:Desktop Fredrick$ NODE_MODULE_CONTEXTS=1 node

require
ReferenceError: require is not defined
at repl:1:2
at REPLServer.eval (repl.js:80:21)
at Interface. (repl.js:182:12)
at Interface.emit (events.js:67:17)
at Interface._onLine (readline.js:162:10)
at Interface._line (readline.js:426:8)
at Interface._ttyWrite (readline.js:603:14)
at ReadStream. (readline.js:82:12)
at ReadStream.emit (events.js:88:20)
at ReadStream._emitKey (tty.js:327:10)
`

@rafaparafernalia

I am using 0.6.8 version, but I always use "node" through files and I never use the REPL interface.

If you use NODE_MODULE_CONTEXTS=1 through files the "require" keyword functions.

Best regards,

@wayoutmind
Owner

This issue has been fixed as of v0.2.4. Can you confirm @rafaparafernalia?

@wayoutmind wayoutmind closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.