global declared variable is not visible in other module - node.js

I'm declaring global variable as follows:
var NODE_MODULES_PATH = process.env.NODE_PATH || 'C:/Users/../AppData/Roaming/npm/node_modules/';
global.NODE_PATH = NODE_MODULES_PATH;
but when I'm accessing it in other module e.g. flollows:
var mysql = require(NODE_PATH + 'mysql');
it gives following error:
ReferenceError: NODE_PATH is not defined
at Object.<anonymous> (z:\$app4pc\website_engine\conf\dbconnection.js:1:83)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (z:\$app4pc\website_engine\models\login_model.js:1:76)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
Process finished with exit code 1

Node.js does not automatically put things in the global scope. You should export it from your module and require it in the one that uses it. If you must set a global variable, you can use:
var GLOBAL.NODE_MODULES_PATH = ...

Related

"handlebars.registerHelper is not a function"

I want to create a simple reverse handlebars helper, but on app.js running, I have this error:
TypeError: exphbs.registerHelper is not a function
at Object.<anonymous> (C:\wamp64\www\test\login\server\example.js:7:8)
at Module._compile (internal/modules/cjs/loader.js:689:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:279:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:752:3)
Thank you very much
Nathan
Assuming the following:
const exphbs = require('exphbs');
To manually register a helper, use this:
const handlebars = exphbs.handlebars;
handlebars.registerHelper('hello', function() {
return new handlebars.SafeString('Hello!');
});
Taken from the fine manual.

nodejs: curly brackets in require statement throwing error

when I try to start app "sudo start app.js", it throws exception
const {notFoundRouteError} = require('../errors');
^
SyntaxError: Unexpected token {
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:374:25)
at Object.Module._extensions..js (module.js:417:10)
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (/home/project-path/server/index.js:4:25)
at Module._compile (module.js:410:26)
at Object.Module._extensions..js (module.js:417:10)
Also downgraded node version to v6.11.0 but it still doesn't work
Also try let instead of const like this,
But, you need to enforce the strict mode.
"use strict"
let {notFoundRouteError} = require('../errors');
Hope this helps!

ReferenceError: self is not defined

When i try to run my javascript (firebase.js taken from https://firebase.google.com/docs/web/setup) in nodejs i have the error ReferenceError: self is not defined :
C:\Program Files\nodejs>node.exe c:\Temp\firebase.js
c:\Temp\firebase.js:535
I.prototype.onTokenRefresh=function(){throw this.a.create("only-available-in-window");};I.prototype.onTokenRefresh=I.prototype.onTokenRefresh;I.prototype.setBac
kgroundMessageHandler=function(){throw this.a.create("only-available-in-sw");};I.prototype.setBackgroundMessageHandler=I.prototype.setBackgroundMessageHandler;I
.prototype.delete=function(){D(this.c)};var J=function(a,b){var c={};return c["firebase-messaging-msg-type"]=a,c["firebase-messaging-msg-data"]=b,c};var K=self,
P=function(a){I.call(this,a);var b=this;this.a=new firebase.INTERNAL.ErrorFactory("messaging","Messaging",x);K.addEventListener("push",function(a){return L(b,a)
},!1);K.addEventListener("pushsubscriptionchange",function(a){return N(b,a)},!1);K.addEventListener("notificationclick",function(a){return O(b,a)},!1);this.b=nu
ll};f(P,I);
ReferenceError: self is not defined
at Object.<anonymous> (c:\Temp\firebase.js:535:476)
at Object.<anonymous> (c:\Temp\firebase.js:547:800)
at Module._compile (module.js:571:32)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:488:32)
at tryModuleLoad (module.js:447:12)
at Function.Module._load (module.js:439:3)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:427:7)
at startup (bootstrap_node.js:151:9)
any ideas what i can do to avoid it ?
K is being set to the value of 'self' (var K=self), but 'self' has not been defined yet. If you copied this code from another source, make sure you got all of it. From the looks of it, I think you would be ok changing 'self' to 'this'.

Node App - ReferenceError: uriUtil is not defined

I was workign on a Node App a few weeks ago which worked fine. I went to restart it today and its throwing this error
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
^
ReferenceError: uriUtil is not defined
at Object.<anonymous> (d:\A\B\C\Web Applications\Donations1\routes\donations.js:14:19)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Module.require (module.js:367:17)
at require (internal/module.js:16:19)
at Object.<anonymous> (d:\A\B\C\Web Applications\Donations1\app.js:9:17)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:139:18)
at node.js:999:3
It relates to this line of code that connects to mongodb
var mongodbUri = 'mongodb://AAA:BBB#ds053305.mongolab.com:12345/donations';
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
You can replace this line:
var mongooseUri = uriUtil.formatMongoose(mongodbUri);
Which this line:
var mongooseUri =require('mongodb-uri').formatMongoose(mongodbUri);
Don't worry to require same module more than once. Node always require only one time, and after that use the cache for loading the module.

SyntaxError: missing ) after argument list

I know this is obvious. I just can't see it.
This is part of a node/express app..
'use strict';
var express = require('express');
var controller = require('./iresize.controller');
var router = express.Router();
router.post('/', controller.send);
module.exports = router;
Which leads to..
SyntaxError: missing ) after argument list
at (/Code/server/iresize/index.js:4:18)
i.e. var controller = require('./iresize.controller');
I don't get it. I have lots of other routes and controllers that look exactly the same. I'm not sure why this one isn't working..
Note: I have cut down the error output for clarity. There is routes.js calling it like so...
app.use('/r', require('./iresize'));
and then in iresize dir I have index.js and resize.controller files..
The full error output is as so:
node server/app.js
[Error: Module version mismatch. Expected 46, got 14.]
js-bson: Failed to load c++ bson extension, using pure JS version
SyntaxError: missing ) after argument list
at exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:413:25)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function._load (/Code/node_modules/pmx/lib/transaction.js:62:21)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Code/server/iresize/index.js:4:18)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function._load (/Code/node_modules/pmx/lib/transaction.js:62:21)
at Module.require (module.js:365:17)
at require (module.js:384:17)
NB: One of the Exceptions is at this file. However if I remove the app.use.. line above everything works fine.

Resources