Category Archives: NodeJs

NodeJs Get Parameters

今日既NodeJs 筆記是用來記錄一個十分簡單的功能
就是 Get Query String或是取後 GETparamater.

解決方法
我們可以使用 req.query[‘ParameterName’] 來取得 parameter 的value

 if(req.query['location'] == undefined){
    console.log("No parameter named 'location'");
 }else{
     console.log(locaton);
}

Hope you find it useful

NodeJs Form Post req.body empty – NodeJs Form Post 問題

在學習NodeJs時嘗試建立一個簡單的 Contact Form
Post DataBackend 之後便用 Email API 去Email Contact Form 的內容給自己
做了很多Research 都是取不到 Contact formparameters

好多教學都是這樣 define “body-parser” 便可以
我的NodeJs BackEnd 程式碼
希望收到資料之後 用nodeJsConsole把 收到的email 輸出來
用來debug. 去確保我程式碼真的做到想做的功能
可惜都是不成功

以下昰小弟最後的製成品..
希望有用吧

解決方法

E.g.

var express = require('express');

// Body Parser need to declare on app.js,
// tried to declare on the route and it does not work
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended : true}));
// my route for the contact form
    homeRouter.route('/contact')
        .get(function(req, res) {
            res.render('home/index', {
                title: 'ShareChiWai',
                nav: nav,
                content: 'contact'
            });
        })
// route for the function to sent email
  homeRouter.route('/emailSent')
    .post(function(req, res) {
      console.log("Begin");
      console.log(req.body.email);
      console.log("end");
    
      res.send(req.body.email);
    });

Full source code 可以參考我在GitHub上的程式碼
https://github.com/sharechiwai/NodeExpress
有時間希望可以一個full demo 只是for contact form.

Main Application
https://github.com/sharechiwai/NodeExpress/blob/master/app.js

Home Route
https://github.com/sharechiwai/NodeExpress/blob/master/src/routes/homeRoutes.js

Hope you find it useful

NodeJS – ejs reference to root path – HTML reference to root Path for the JS/CSS/Image File

HTML reference to root Path for the JS/CSS/Image File
今天在學習NodeJS with Express 又遇到問題了
就是不知道怎樣可以reference 返D Javascript /CSS 檔案到 Root Path/ Root Directory
之前用 Codeigniter 可以使用 base_url()
ASP.Net MVC 可以用

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/jquery")

當我使用路徑”css/bootstrap.min.css“.. 在其他的path 便出現問題
<pre>
<link rel=”apple-touch-icon” href=”apple-touch-icon.png”>

<link rel=”stylesheet” href=”css/bootstrap.min.css”>
<style>
body {
padding-top: 50px;
padding-bottom: 20px;
}

</style>
<link rel=”stylesheet” href=”lib/bootstrap/dist/css/bootstrap-theme.min.css”/>
<link rel=”stylesheet” href=”css/main.css”>
<script src=”lib/jquery/dist/jquery.js”></script>
<script src=”lib/bootstrap/dist/js/bootstrap.min.js”></script>
</pre>
解決方法十分簡單..
只要在 路徑開頭加上 “/” 便可以了
e.g.
“/css/bootstrap.min.css

<pre>
<link rel=”stylesheet” href=”/css/bootstrap.min.css”>
<style>
body {
padding-top: 50px;
padding-bottom: 20px;
}

</style>
<link rel=”stylesheet” href=”/lib/bootstrap/dist/css/bootstrap-theme.min.css”/>
<link rel=”stylesheet” href=”/css/main.css”>
<script src=”/lib/jquery/dist/jquery.js”></script>
<script src=”/lib/bootstrap/dist/js/bootstrap.min.js”></script>
</pre>

hope you find it useful
如果有更好的解決方法..希望你可以和大家分享

Solve nodejs Access-Control-Allow-Origin header Issue 如果在NodeJS上解決”Access-Control-Allow-Origin header” 問題

之前在NodeJs寫了一個API 來方便自己去取資料..
誰不知當我在其他網頁用這個API 時出現了”Access-Control-Allow-Origin header” 的問題..

Origin file: not found in Access-control-Allow-Origin header.
Origin file: not found in Access-Control-Allow-Origin header

做了一會Research後 找到了解決方法了
我們只需要加入以下的”allowCrossDomain” 功能 便可以了
解決方法

var express = require('express');

var app = express();

// Code to solve the Access-Control-Allow-Origin header Issue
var allowCrossDomain = function(req, res, next) {
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');

   // intercept OPTIONS method
    if ('OPTIONS' == req.method) {
      res.send(200);
    }
    else {
      next();
    }
};


app.use(allowCrossDomain);

Hope you find it useful

NodeJs how to get root path – 在NodeJs上如何取得 Root Path

今日嘗試在Route 檔案上load我的config file
E.G.

var config = require('./config/config');

誰不知..
當我執行我的NodeJs Application 時出現以下的錯誤信息
Error: Cannot find module ‘./config/config’
Error: Cannot find module './config/config'

解決方法是只要我們可以Reference Full Path E.G. 包含 Root Directory 應該便可以解決這個問題
我們可以使用 “path“這一個module
之後使用他的path.dirname功能去取得
require.main.filename執行的js path location

解決方法

var path = require('path');
var appDir = path.dirname(require.main.filename);

console.log(appDir);
var config = require(appDir + '/config/config');

結果:
Print root directory

Hope you find it useful

NodeExpress My NodeJs recipe Code – 我的NodeJs 罐頭程式碼

最近又再開始寫NodeJs
還記得第一次學習 NodeJs 是在 Oxford其中一個 Javascript User Group
NodeSchool Day上學..
由於沒有常常使用的關係 所以很快又忘記了..
到了去到Hackathon時有需要用到NodeJs..
又要花一些時間才可以熟習 什麼寫NodeJS的Code

不久之前參加了 Intel IoT的一個 Hackathon..
又一次令我感到..明明之前學過..但是又忘記了的受挫感..

完了Hackathon之後便下定了決心..
要把自己學習過的 NodeJs 技術/功能Blog 和放在GitHub
和大家分享..
就當是一個recipe, 方便remind 自己之後寫過的Code

有興趣的朋友可以去我的GitHub看看
https://github.com/sharechiwai/NodeExpress

Node Express By ShareChiWai
或 Published Version
http://sharechiwainodeexpress.herokuapp.com/

Hope you find it useful

Error: Listen EACCES 0.0.0.0:5000

今日嘗試好好地寫一個Node JS With ExpressWeb Application
來練習一下自己的NodeJS Skill
誰不知當我 執行 node app.js
出現了以下的錯誤信息

Error: Listen EACCES 0.0.0.0:5000
Error: Listen EACCES 0.0.0.0:5000
做了一會research之後發現這是因為電腦上同一個Port e.g. port :5000
正在被使用中..
所以便有這個error.
之後發現原來電腦上的IIS 其中一個virtual directory正在使用 port 5000

解決方法十分簡單
只需要更改了 NodeJs 執行的Port便可以了
E.G.

var express = require('express');

var app = express();

var port = process.env.PORT || 3000;

app.listen(port, function(err) {
    console.log('running server on port ' + port);
});

Hope you find it useful