Frank,
All the other crap aside, hopefully by now you have figured out the issue.
However, I'll try to be a little more crystal clear than what has been
posted already.
You've got a couple issues, starting at the beginning:
1) You're correct, mongod process is already running, so you're good there.
2) It sounds like you may have copy / pasted code from an Express.js
tutorial. A good first place would always be to fully understand what is
going on with every line of code when running through a tutorial. Usually
there is a line-by-line guide or some sort of documentation to walk you
through it.
3) You're Express app configuration file is fine, as you said, you ran npm
install against package.json and all worked well. Good.
4) Now we come to the meat of the problem, when the express app is
starting, it does a bunch of things defined in app.js, including setting up
your Express routes. This is line that reads: "app.get('/users',
user.list);" What this says is "When user navigates to
http://{myapp.com}/users, invoke the function "list" on the object "user".
User.list (function) is your callback to that URL route.
In Node, as in javascript in general and any other language, you must
define something before invoking it. I'm sure you understand this part
perfectly well. However, assuming you read the error carefully, you'll
notice it says: "ReferenceError: user is not defined". This should look
identical to errors you have seen in client side code before. What it says
is that you are attempting to reference an object (user) that does not
exist. Without seeing your code, its difficult to determine why this
doesn't exist. However, there are some very common things to know about
Node, one of which is how to "include" another JS file. Assuming you had
another file named "User.js", and within that was a "class" function or
object literal, and within that was a method called "list", then you would
reference that with as:
var user = require("path/to/models/User.js");
So long as this was done above the declaration of the route, it would all
work. Another option would be if the "user" was declared inline. For
instance, it might look like:
var user = function() {
};
user.list = function() {
};
Or better yet, "list" would be applied to the prototype:
user.prototype.list = function() { };
Any of these cases, so long as they are defined or referenced above the
("/users", user.list), would cause your app to run.
Regarding Mongoose, it is absolutely not required. You can use the native
Javascript driver for mongodb just fine
(http://docs.mongodb.org/ecosystem/drivers/javascript/), or any of several
other libraries (e.g. Mongoskin). However, it seems like your tutorial is
using mongoose, as it simplifies things just to get started. So you should
stick with that.
Regarding Mongodb in general, hopefully by now it is clear that your null
reference error has nothing to do with Mongo or its setup.
On Tuesday, April 8, 2014 6:10:27 PM UTC-6, Frank Z wrote:
>
> I installed mongodb through my unbuntu terminal after installing node.js.
>
> When I run sudo service mongodb start
>
> I get back "start: Job is already running: mongodb" from the terminal
>
> So my assumption is that everything is running properly here...
>
> I'm trying to make this todo list from an example in my book, using
> express.js. I used the package.json file to install the depenencies:
>
> {
> "name": "application-name",
> "version": "0.0.1",
> "private": true,
> "scripts": {
> "start": "node app.js"
> },
> "dependencies": {
> "express": "3.5.1",
> "jade": "*",
> "mongoose":"3.8.4"
> }
> }
>
> Then I run npm install in my terminal...
>
> Everything is correct in my app.js file, all the variables declared
> properly with mongoose and everything...
>
> I run node app.js and get back:
>
> /home/frankz/Desktop/nodesandbox/connect_to_mongo/app.js:40
> app.get('/users', user.list);
> ^
> ReferenceError: user is not defined
> at Object.<anonymous>
> (/home/frankz/Desktop/nodesandbox/connect_to_mongo/app.js:40:19)
> 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 Function.Module.runMain (module.js:497:10)
> at startup (node.js:119:16)
> at node.js:902:3
>
> So what's going on here?
>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.