javascript - 无法找到带有 Leap 运动的模块 "sleep"

标签 javascript android node.js dependencies

我正在尝试将我的 Android 项目与 Le​​ap 运动 Controller 连接,并使用 this question 中提到的过程和源代码。作为引用。

我对 Node.js 非常陌生,无法让 JavaScript 文件与 Node 一起使用,也无法解决依赖关系。我尝试了 Node 更新,但没有成功。我需要解决以下错误:

$ node index.js 
module.js:338
    throw err;
          ^
Error: Cannot find module 'sleep'
    at Function.Module._resolveFilename (module.js:336:15)
    at Function.Module._load (module.js:278:25)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/index.js:11:13)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Function.Module.runMain (module.js:501:10)

这是供引用的 JavaScript 文件:

var http = require('http'), express = require('express'), app = express(), server = http
        .createServer(app), port = process.env.PORT || 5000, position = {
    x : 0,
    y : 0,
    z : 0,
    hand : '',
    present : false
};
var updated = false;

var sleep = require('sleep');

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

function hasUpdate() {
    if (updated) {
        updated = false;
        return true;
    }
    return false;
}

var BinaryServer = require('binaryjs').BinaryServer;
var binaryServer = new BinaryServer({
    port : 9000

});
binaryServer.on('connection', function(client) {
    console.log('accept binary connection');
    var stream = client.createStream();
    var buffer = [];
    console.log('got stream');
    stream.on('data', function(data) {
        buffer.push(data);
        var text = buffer.join();
        var end = text.lastIndexOf('}');
        if (end > -1) {
            var temp = text.substr(0, end+1);
            var start = temp.lastIndexOf('{');
            if (start > -1) {
                var message = text.substr(start, end+1);

                var o=JSON.parse(message);
                updateHandPosition(o);

                if (end +1 < buffer.length) {
                    buffer = buffer.splice(end + 1, buffer.length);
                }else{
                    buffer=[];
                }
            }
//          console.log('received data from client ' + message + ' ' + end
//                  + ' ' + start + ' ');

        }
    });
});

app.use(express.bodyParser());

app.get('/', function(request, response) {
    response.sendfile('public/index.html');
});

function updateHandPosition(o){
    position.present = o.present;
    if (position.present) {
        position.x = o.x;
        position.y = o.y;
        position.z = o.z;
        position.hand = o.hand;
    } else {
        position.x = null;
        position.y = null;
        position.z = null;
        position.hand = null;
    }
    updated=true;
//  console.log('updating hand position '+JSON.stringify(position));
}

app.post('/update', function(request, response) {
    updateHandPosition(response.body);
    response.json({
        success : true
    });
    updated = true;
});

app.get('/retrieve', function(request, response) {
    response.json(getPositionData());
});

function getPositionData() {
    if (position.present) {
        return {
            present : true,
            x : position.x,
            y : position.y,
            z : position.z,
            hand : position.hand
        };
    } else {
        return {
            present : false
        };
    }
}

function forever(request, response) {
    this.response = response;
    this.request = request;

    var ref = this;
    this.request.on('close', function() {
        ref.clear();
    });
    this.request.on('end', function() {
        ref.clear();
    });
};

forever.prototype.clear = function() {
    this.request = null;
    this.response = null;
};
forever.prototype.stream = function() {
    if (this.response != null) {
        if (hasUpdate()) {
            this.response.write(JSON.stringify(getPositionData()));
            this.response.write(",");
        }
        var ref = this;
        setTimeout(function() {
            ref.stream();
        }, 5);
    }

};

app.get('/stream', function(request, response) {
    var f = new forever(request, response);
    f.stream();
});

app.get(/^(.+)$/, function(req, res) {
    res.sendfile('public/' + req.params[0]);
});

我尝试使用“node install sleep”,但收到以下错误日志:

npm WARN package.json LeapCallController@0.1.0 No repository field.
/
> sleep@2.0.0 install /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/node_modules/sleep
> node-gyp rebuild

gyp ERR! configure error 
gyp ERR! stack Error: "pre" versions of node cannot be installed, use the --nodedir flag instead
gyp ERR! stack     at install (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/install.js:66:16)
gyp ERR! stack     at Object.self.commands.(anonymous function) [as install] (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/node-gyp.js:66:37)
gyp ERR! stack     at getNodeDir (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:152:20)
gyp ERR! stack     at /usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:95:9
gyp ERR! stack     at ChildProcess.exithandler (child_process.js:723:7)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at maybeClose (child_process.js:1000:16)
gyp ERR! stack     at Socket.<anonymous> (child_process.js:1168:11)
gyp ERR! stack     at Socket.emit (events.js:107:17)
gyp ERR! stack     at Pipe.close (net.js:461:12)
gyp ERR! System Linux 3.16.0-30-generic
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent/node_modules/sleep
gyp ERR! node -v v0.13.0-pre
gyp ERR! node-gyp -v v1.0.1
gyp ERR! not ok 

npm ERR! sleep@2.0.0 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the sleep@2.0.0 install script.
npm ERR! This is most likely a problem with the sleep package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls sleep
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.16.0-30-generic
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "sleep"
npm ERR! cwd /home/shivin/Development/LeapJS code/LeapMotionAndroidBridge/WebContent
npm ERR! node -v v0.13.0-pre
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR! not ok code 0

最佳答案

如果您不使用 sleep ,请删除此行

var sleep = require('sleep');

或使用安装 sleep 模块

npm install sleep

并重新启动 Node 项目

关于javascript - 无法找到带有 Leap 运动的模块 "sleep",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28703218/

相关文章:

javascript - 如何防止命名空间生成?

javascript - 在 Chrome 扩展内的 iframe 内执行父窗口 JS

javascript - Odoo - 如何翻译 javascript 文件中的字符串

android - 将 apk 添加到 zip Gitlab-CI 中? Artifact .gitlab-ci.yml 配置

java - 创建java程序来运行ADB命令

android - 长按 map 以打开警报对话框以在 Google map 中创建标记

javascript - 使用 ng update 升级到 ng9/ivy 时出错

javascript - socket.io在房间字典中的房间是 'undefined'吗?

php - 有人可以解释如何在将 html 输入值写入 .txt 文件的 php 脚本之后重定向 url

javascript - Realm 不会在 React native 上返回异常