'nodejs'에 해당되는 글 4건

  1. 2013/01/16 boyo node.js iconv 모듈 에러.
  2. 2012/09/17 boyo nodejs xml2json 모듈 설치 문제.
  3. 2012/05/14 boyo node.js socket.io 사용 방법(broadcast 사용)
  4. 2012/05/10 boyo git 사용법

npm으로 iconv 설치가 완료되었더라도 require('iconv') 시 아래와 같은 에러가 발생 할 수 있음.
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: Cannot find module 'iconv'

npm 으로 모듈이 설치되면 모듈 폴더 하위에 package.json 파일이 존재하며,
해당 파일에서 main 파일을 지정하게 되어 있음.
iconv 의 main 파일의 경로 설정이 잘못 되어 있어 모듈을 찾지 못하는 에러가 발생함.

- main 파일 확인
# grep "main" package.json.bk
"main": "./build/Release/iconv",

- 파일이 존재하지 않음
# ll ./build/Release/iconv
ls: cannot access ./build/Release/iconv: No such file or directory

실제 main 실행파일은 node_modules/iconv/iconv.node 바이너리 파일로 존재 함.

package.json의 main 파일을 iconv.node 로 변경하면 모듈을 인식 함.
edit node_modules/iconv/package.json
"main": "./iconv.node",
2013/01/16 22:18 2013/01/16 22:18

xml2json 모듈의 의존성에 의해 node-expat 모듈이 설치되어져야 합니다.
node-expat 모듈이 설치되어지기 위해서는 libexpat1-dev 라이브러리가 설치되어 있어야 합니다.
확인시 libexpat1-dev 설치되어 있지 않아 node-expat 설치시 에러가 발생하여 문제가 되었습니다.

[email protected]:~# dpkg -l | grep expat
ii  libexpat1                  2.0.1-7.2ubuntu1          XML parsing C library - runtime library

apt-get install libexpat1-dev 로 라이브러리 설치 후 앱실행을 하면 node-expat, xml2json 모듈이 정상적으로 설치가 됩니다.

[libexpat1-dev 설치가 안되어 있을시 node-expat, xml2json 모듈 설치 에러메세지]
npm ERR! error installing [email protected]
npm ERR! error installing [email protected]

npm ERR! [email protected] preinstall: `node-waf clean || (exit 0); node-waf configure build`
npm ERR! `sh "-c" "node-waf clean || (exit 0); node-waf configure build"` failed with 1
npm ERR!
npm ERR! Failed at the [email protected] preinstall script.
npm ERR! This is most likely a problem with the node-expat package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!    node-waf clean || (exit 0); node-waf configure build
npm ERR! You can get their info via:
npm ERR!    npm owner ls node-expat
npm ERR! There is likely additional logging output above.
npm ERR!
npm ERR! System Linux 3.2.0-17-generic
npm ERR! command "node" "/usr/bin/npm" "install" "xml2json"
npm ERR! cwd /home/test/test9/apps/apptest
npm ERR! node -v v0.6.14
npm ERR! npm -v 1.1.4
npm ERR! code ELIFECYCLE
npm ERR! message [email protected] preinstall: `node-waf clean || (exit 0); node-waf configure build`
npm ERR! message `sh "-c" "node-waf clean || (exit 0); node-waf configure build"` failed with 1
npm ERR! errno {}
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!    /home/test/test9/apps/apptest/npm-debug.log
npm not ok

2012/09/17 13:39 2012/09/17 13:39
socket.io 모듈 사용전에 해당 모듈이 설치되어 있는지 확인해 보고,
설치가 되어 있지 않다면 npm 으로 설치하면 된다.

[web.js]
var app = require('http').createServer(handler).listen(8001)
  , io = require('socket.io').listen(app)
  , fs = require('fs')
  , nicklist = {};

function handler(req, res){
  fs.readFile(__dirname + '/index.html', function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200, { 'Content-Type': 'text/html'});
    res.end(data);
  });
}

io.sockets.on('connection', function (socket) {
  socket.on('join', function(nick){
      nicklist[nick] = socket.nickname = nick;

      socket.broadcast.emit('joinok', nick);
      io.sockets.emit('nicknames', nicklist);
  });

  socket.on('disconnect', function(){
      delete nicklist[socket.nickname];
      socket.broadcast.emit('nicknames',nicklist);
  });
});

[index.html]

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JP Chat</title>
  <script src="http://code.jquery.com/jquery-1.7.min.js"></script>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <form id="set-nickname">

      <label>NickName : </label><input type="text" id="nick" />
      <button id="join">Join</button>
  </form>
  <div id="nicknames"><ul></ul></div>
  <script>
      (function($){
          var socket = io.connect('http://apptest.cafe24app.com');

          socket.on('joinok', function(nick){
              $("ul", "#nicknames").append("<li>"+nick+"</li>");
          });

          socket.on('nicknames', function(data) {
              var nicklist = $("ul", "#nicknames").empty();

              for (var i in data) {
                  $("ul", "#nicknames").append("<li>"+data[i]+"</li>");
              }
          });

          $("#join").on({
              click: function() {
                  var nick = $("#nick");
                  if (nick.val() == "") {
                      alert('NickName 을 입력해주세요.');
                      nick.focus();
                      return false;
                  } else {
                      socket.emit('join', nick.val());
                      nick.val("");
                  }

                  return false;
              }
          });
      })(jQuery);
  </script>
</body>
</html>


참고 URL :http://blog.j2p.kr/blog/2011/11/29/node-chat3/
2012/05/14 14:20 2012/05/14 14:20

git 사용법

nodejs 2012/05/10 20:22
1. 저장소 생성
[email protected] /e
$ mkdir testnodejs

[email protected] /e
$ cd testnodejs

[email protected] /e
$ git init
Initialized empty Git repository in e:/testnodejs/.git/

2. 원격 저장소 설정
[email protected] /e/testnodejs (master)
$ git remote add remote_nodejs [email protected]:testid_apptest

3. 기본 index 파일 생성(nodejs 호스팅에서는 web.js 파일을 index 파일로 사용됩니다.)
[email protected] /e/testnodejs (master)
$ vi web.js

4. 현재 디렉토리의 모든 파일을 등록
[email protected] /e/testnodejs (master)
$ git add .

5. git commit
[email protected] /e/testnodejs (master)
$ git commit -m "nodejs test"
[master (root-commit) c8e79b0] nodejs test
 1 file changed, 8 insertions(+)
 create mode 100644 web.js

6. 원격 저장소에 push
[email protected] /e/testnodejs (master)
$ git push remote_nodejs master
Enter passphrase for key '/c/Users/test/.ssh/id_rsa':
[email protected]'s password:
Counting objects: 2, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 294 bytes, done.
Total 2 (delta 1), reused 0 (delta 0)
remote: web.js
remote: TMP_DIR = /tmp/testid/testid_apptest
remote: TARGET_DIR  = /home/hosting_users/testid/apps
remote: USER = testid
remote: >f..T...... testid_apptest/web.js
To [email protected]:testid_apptest
   11be96c..5c74f53  master -> master
2012/05/10 20:22 2012/05/10 20:22