カテゴリー : Express

今、ドットインストールの「Express入門」を Mac で学習するための覚え書き

今、ドットインストールの「Express入門」を Mac で学習するための覚え書きです。

「Express入門」を学ぶ前提

ドットインストールの「Express入門」は Express3 の前提でレッスンが用意されています。しかし、現在は Express4 がリリースされているので、何も考えずに進めていくと Express4 がインストールされてしまい思うようにレッスンを進めていくことができません。

このようなつまづきポイントがいくつかあるので、本記事ではそれらを補足していきます。

#01 Expressとはなにか?

まず、Node.js のバージョン管理ツール nvm を Mac にインストールする方法 を参考にしてインストールして、Node.js もインストールします。

そして、レッスン内では、

sudo npm install express -g

と書かれていますが、これを下記のように Express3 のバージョンを指定してインストールしましょう。

npm install express@3.21.2 -g

#03 はじめてのExpress

レッスン内では、

npm install express

と書かれていますが、これも下記のように Express3 のバージョンを指定してインストールしましょう。

npm install express@3.21.2

また、ブラウザからアクセスするには 192.168.33.93:3000 を入力するとなっていますが、Mac のターミナルで node app している場合 localhost:3000 もしくは 127.0.0.1:3000 を入力することで、アクセスできます。

#07 middlewareを作ってみよう

このレッスンでも、

sudo npm install nodemon -g

と sudo 使わずに、

npm install nodemon -g

で大丈夫です。

以上です。Mac で「Express入門」を学習する方のお役に立てたなら嬉しいです。

[Node.js][Express] Error: Request Entity Too Large

Express で大きいサイズのファイルをPOSTしたら Request Entity Too Large というエラーが発生した。

エラーメッセージ

Error: Request Entity Too Large
  at Object.exports.error (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/utils.js:63:13)
  at limit (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/limit.js:51:47)
  at multipart (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/multipart.js:102:5)
  at /u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:57:9
  at urlencoded (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/urlencoded.js:52:72)
  at /u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:55:7
  at json (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/json.js:54:55)
  at Object.bodyParser [as handle] (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:53:5)
  at next (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/proto.js:193:15)
  at Object.cookieParser [as handle] (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5)
  at next (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/proto.js:193:15)
  at Object.expressInit [as handle] (/u/apps/com/shared/node_modules/express/lib/middleware.js:30:5)
  at next (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/proto.js:193:15)
  at Object.query [as handle] (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/middleware/query.js:44:5)
  at next (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/proto.js:193:15)
  at Function.app.handle (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/proto.js:201:3)
  at Server.app (/u/apps/com/shared/node_modules/express/node_modules/connect/lib/connect.js:65:37)
  at Server.EventEmitter.emit (events.js:98:17)
  at HTTPParser.parser.onIncoming (http.js:2108:12)
  at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
  at Socket.socket.ondata (http.js:1966:22)
  at TCP.onread (net.js:527:27)

bodyParser の limit オプションの値を変更して、アップロードするファイルサイズ制限を上げればよいです。

全 routing に適用する書き方

app.use(express.bodyParser({
  limit: '1024mb'
}));

/upload に適用する書き方

app.use('/upload', express.bodyParser({
  limit: '1024mb'
}));

特定の URL だけ limit を変更する書き方

var defaultBodyParser = express.bodyParser({
  limit: "5mb"
});
var extendedBodyParser = express.bodyParser({
  limit: "1024mb"
});
 
app.use(function(req, res, next) {
  if (req.url === '/upload') {
    return defaultBodyParser(req, res, next);
  } else {
    return extendedBodyParser(req, res, next);
  }
});

以上です。


参考情報

[Node.js] Express でホスト名 (host name) を取得する

Express (Node.js) でホスト名を取得するには、

request.headers.host

HTTP リクエストヘッダーを見ればいい。

別に、Express に限ったことじゃないけど。


参考情報

node.js – Node JS get server hostname of current process – Stack Overflow

[Node.js] Error: Cannot find module ‘express’

Node.js で Express をインストール済みなのに Error: Cannot find module ‘express’ というエラーが出るときの解決方法をメモ。

■ エラーメッセージ

% node-dev app.js
 [ERROR] Error
Error: Cannot find module 'express'
    at Function._resolveFilename (module.js:337:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:359:17)
    at require (module.js:375:17)
    at Object.<anonymous> (/Users/bakorer/git/sampleapp/app.js:5:15)
    at Module._compile (module.js:446:26)
    at Object..js (module.js:464:10)
    at Object..js (/Users/bakorer/.nvm/v0.6.21/lib/node_modules/node-dev/wrapper.js:121:14)
    at Module.load (module.js:353:31)
    at Function._load (module.js:311:12)

■ 解決方法

依存関係のあるものを含めてインストールしないといけなかった。

% npm install -d

以上です。

【参考】node.js + express インストールめも – しゅろのめも はてなブックマーク - node.js + express インストールめも - しゅろのめも

[Node.js] ExpressでBasic認証

ExpressでBasic認証を設定するメモ。

■ 全体にBasic認証

app.use(express.basicAuth('username', 'password'));

or

app.use(express.basicAuth(function(user, password) {
  return user === 'username' && password === 'password';
}));

■ 特定のRoutingにBasic認証

app.all('/admin/*', express.basicAuth(function(user, password) {
  return user === 'username' && password === 'password';
}));

参考情報

expressでbasic認証 – hokaccha.hamalog v2