Проблема с люлькой на окнах

Я запускаю npm install -g cradle и получаю вывод:

npm http GET https://registry.npmjs.org/cradle
.... lots of more GET's .....
[email protected] C:\Users\...\npm\node_modules\cradle
├── [email protected]
├── [email protected]
└── [email protected]

Кажется, все работает нормально.

Но когда я запускаю свой server.js

var fs = require("fs");
var express = require("express");
var site = express.createServer();
var io = require("socket.io").listen(site);
var cradle = require('cradle');

io.set('log level', 1);

// Determine which dist directory to use
var dir = process.argv.length > 2 && "./dist/" + process.argv[2];

// Use custom JS folder based off debug or release
dir && site.use("/assets/js", express.static(dir + "/js"));
dir && site.use("/assets/css", express.static(dir + "/css"));

// Serve static files
site.use("/app", express.static("./app"));
site.use("/assets", express.static("./assets"));
site.use("/dist", express.static("./dist"));

// Serve favicon.ico
site.use(express.favicon("./favicon.ico"));

// Ensure all routes go home, client side app..
site.get("*", function (req, res) {
    fs.createReadStream("./index.html").pipe(res);
});

// Communication with clients
io.sockets.on('connection', function (socket) {
    console.log('user connected');

    socket.on('testCommunication', function (message, fn) {
        fn(message + ' world');
    });
});

site.listen(8000);

, я получаю вывод:

    info  - socket.io started

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
    Error: Cannot find module 'cradle'
    at Function._resolveFilename (module.js:334:11)
    at Function._load (module.js:279:25)
    at Module.require (module.js:357:17)
    at require (module.js:368:17)
    at Object.<anonymous> (C:\node\opensthlm\server.js:6:14)
    at Module._compile (module.js:432:26)
    at Object..js (module.js:450:10)
    at Module.load (module.js:351:31)
    at Function._load (module.js:310:12)
    at Array.0 (module.js:470:10)

Модуль находится в том же каталоге, что и socket.io, express и т. д., с загрузкой которых у меня не возникло проблем. Я смотрел на эту ошибку в течение часа. Раньше я использовал колыбель на Mac, и она работала как волшебство, теперь я на Windows, может ли это быть как-то связано с этим? В противном случае я не в курсе. Любые идеи?


person Soroush Hakami    schedule 06.03.2012    source источник
comment
Не очень хорошо разбираюсь в узле, и у меня были странные кажущиеся проблемы с require. Это может показаться незначительным, но одинарная и двойная разница с требованием колыбели не является проблемой, не так ли?   -  person Will Buck    schedule 06.03.2012
comment
Я обновил свой пост, включив в него полный server.js. Насколько я могу судить, я на самом деле не делаю запрос на диван-кровать, сервер просто не может найти модуль, я ошибаюсь в этом предположении?   -  person Soroush Hakami    schedule 06.03.2012
comment
не забудьте отметить ответ, если он вам помог.   -  person Prashant Jain    schedule 14.05.2012


Ответы (2)


Я также запускаю узел в Windows. Я скопировал ваш код, а затем ввел следующие команды.

  • экспресс-установка npm
  • npm установить socket.io
  • npm установить колыбель
  • узел server.js

Кажется, все работает нормально. После установки колыбели я получил

npm http GET http://registry.npmjs.org/cradle
npm http 200 http://registry.npmjs.org/cradle
npm http GET http://registry.npmjs.org/follow
npm http GET http://registry.npmjs.org/vargs/0.1.0
npm http GET http://registry.npmjs.org/request
npm http 200 http://registry.npmjs.org/vargs/0.1.0
npm http GET http://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz
npm http 200 http://registry.npmjs.org/follow
npm http 200 http://registry.npmjs.org/vargs/-/vargs-0.1.0.tgz
npm http 200 http://registry.npmjs.org/request
npm http GET http://registry.npmjs.org/request
npm http 200 http://registry.npmjs.org/request
[email protected] ./node_modules/cradle
├── [email protected]
├── [email protected]
└── [email protected]

Обратите внимание, что я не использовал параметр глобальной установки npm1.x.

Кристоф

P.S. Основная причина, по-видимому, заключается в том, что ссылка npm не работает в Windows. Видеть

person stof65    schedule 30.03.2012

установить колыбель с помощью:

npm install cradle

не используйте ключ -g. Это помогло мне.

Кстати: я запускал командную строку в режиме администратора.

http://prazjain.wordpress.com/2012/04/24/node-js-error-error-cannot-find-module-xyz/

person Prashant Jain    schedule 23.04.2012