h1. Creating Veery API NodeJS Jan 24, 2017 http://veeryapinodejs.soupmode.com hr. edit dns. create cname record: hostname = veeryapinodejs is an alias of = @ cd into /home/veery mkdir Veery-API-NodeJS cd into Veery-API-NodeJS mkdir js cd js mkdir node_modules, although it might get automatically created later create package.json { "name" : "Veery-API-NodeJS", "version" : "1.0.0", "dependencies" : { "express" : "4.14.0", "body-parser" : "1.16.0", "html-entities" : "1.2.0", "querystring" : "0.2.0" } } unsure if i need all of those packages. i looked up the most recent package version numbers at https://www.npmjs.com the command "npm install" will read the package.json file, create node_modules directory, and place the downloaded the packages listed in the json file in that directory. within the same "js" directory, create dispatch.js var express = require('express'), bodyParser = require('body-parser'), path = require('path'), app = express(); app.use(bodyParser.urlencoded({ extended: true })); // parse application/x-www-form-urlencoded app.get('/', function(req, res){ res.send('hello world'); }); app.listen(3002); cd /etc/nginx/sites-available create veeryapinodejs.soupmode.com # veeryapinodejs.soupmode.com-info server { listen 80; server_name veeryapinodejs.soupmode.com; location / { default_type text/html; error_page 404 = @fallback; } location @fallback { proxy_pass http://veeryapinodejs.soupmode.com:3002; } } ln -s /etc/nginx/sites-available/veeryapinodejs.soupmode.com /etc/nginx/sites-enabled/veeryapinodejs.soupmode.com service nginx restart forever start dispatch.js more about forever commands: usage: forever [start | stop | stopall | list] [options] SCRIPT [script options] options: start start SCRIPT as a daemon stop stop the daemon SCRIPT stopall stop all running forever scripts list list all running forever scripts forever list in browser or with curl, access http://veeryapinodejs.soupmode.com should see the plain text response: hello world h3. etc. http://expressjs.com/en/4x/api.html http://jothut.com/cgi-bin/junco.pl/blogpost/36422/10Nov2014/Learning-NodeJS-Programming h3. couchdb clients 1. https://www.npmjs.com/package/couchdb 2. https://www.npmjs.com/package/nano 3. https://www.npmjs.com/package/couchdb-client 4. - the one that i chose to try first: https://www.npmjs.com/package/couchdbjs h3. Jan 26, 2017 created command prompt test script. tried running but i received: SyntaxError: Use of const in strict mode. which is due to the use of const in the couchdbjs module and due to my server running and old version of node. http://askubuntu.com/questions/426750/how-can-i-update-my-nodejs-to-the-latest-version sudo npm cache clean -f sudo npm install -g n sudo n stable sudo ln -sf /usr/local/n/versions/node//bin/node /usr/bin/node version=7.4.0 but when i ran node -v, i was still running the old version instead of v7.4.0 that i installed. the old version was v0.10.21 i tried whereis node which produced: /usr/bin/node /usr/local/bin/node both of those were version 7.4.0. then i did "which node" which produced: /root/local/bin/node i did: ln -sf /usr/local/n/versions/node/7.4.0/bin/node /root/local/bin/node and now when i run "node -v", i get: v7.4.0 and now my test script works. test.js: 'use strict'; const Couchdbjs = require('couchdbjs'); const db = new Couchdbjs('mycouchdbname', cb); var docinfo = db.getDoc('profile', cb); var json_str = JSON.stringify(docinfo); function cb (err, data) { if (err) console.error(err); else console.log(data); // data is array of uuids } json= { _id: 'profile', _rev: '11-501aa2dd05bf45d71beee85c15bf2cca', author: 'JohnR', reading_time: 0, text_intro: 'My profile page. Nothing here for now.', created_at: '2015/06/12 14:04:52', html: '

My profile page.

\n\n

Nothing here for now.

\n', post_type: 'article', markup: 'h1. Profile\r\n\r\nMy profile page.\r\n\r\nNothing here for now.', more_text_exists: 0, tags: [], post_status: 'public', updated_at: '2015/09/15 22:51:42', word_count: 7, type: 'post', title: 'Profile' } h3. Helpful Links * https://nodejs.org/api/errors.html * http://veeryclientnodejs.soupmode.com/ * http://veeryapiperl.soupmode.com/api/posts/profile * http://veeryapiperl.soupmode.com/api/posts/profile/?text=markup * https://github.com/jrsawvel/Veery-API-Perl/blob/master/docs/veery-api.md * https://github.com/jrsawvel/Veery-Client-Perl/blob/master/lib/App/ShowPost.pm * https://github.com/jrsawvel/Veery-API-Perl/blob/master/lib/App/ReadPost.pm * https://github.com/jrsawvel/Veery-Client-NodeJS * http://jothut.com/cgi-bin/junco.pl/blogpost/15807/27Jan2017/GitHub-Commits h3. Jan 27, 2017 forever info. i need to rename the dispatch.js files to something unique. i cannot determine which dispatch.js belongs to which app. i have to use ps and forever to match up files with apps. # date Fri Jan 27 17:04:04 UTC 2017 root@soupmode:/home/veery/Veery-Client-NodeJS/js# forever list info: Forever processes running data: uid command script forever pid logfile uptime data: [0] xX4P /root/local/bin/node dispatch.js 2156 9574 /root/.forever/xX4P.log 46:15:23:36.471 data: [1] RalR /root/local/bin/node index.js 3495 3499 /root/.forever/RalR.log 524:20:8:21.26 data: [2] v76p /root/local/bin/node dispatch.js 27383 24934 /root/.forever/v76p.log 367:22:57:58.595 no shock that after upgrading nodejs this week that now after stopping and restarting my dispatch.js files for older nodejs apps, those apps don't restart. i renamed the node_modules directory within my client nodejs app for veery to something old. then i cat package.json and i did nmp install for all of the packages. i also installed express-generator for some reason. anyway, i restarted dispatch.js and it didn't error out. my code works. h3. api code issues http://stackoverflow.com/questions/26066785/proper-way-to-set-response-status-and-json-content-in-a-rest-api-made-with-nodej http://expressjs.com/4x/api.html#res.send h3. Forever jan 27, 2017 unlink /root/local/bin/forever npm uninstall forever -g npm install forever -g ln -s /usr/local/n/versions/node/7.4.0/lib/node_modules/forever/bin/forever /root/local/bin/forever i don't know why the server environment wants to find forever at /root/local/bin/