如何使用'Node.js'安装模块'ws'?

时间:2018-01-23 11:00:52

标签: node.js websocket yocto recipe

我想在yocto morty系统中使用'Node.js'安装模块'ws'。 但我找不到Node.js包含'ws'模块的配方。

我尝试了关注源代码,但Node.js找不到模块'ws'。

var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({
        host : '0.0.0.0',
        port : 8080
});
wss.on('connection', function(ws) {
        ws.on('message', function(message) {
                console.log('received: %s', message);
                ws.send(message);
        });
});

结果是

Error: Cannot find module 'ws'
    at Function.Module._resolveFilename (module.js:325:15)
    at Function.Module._load (module.js:276:25)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> (/home/root/app.js:1:85)
    at Module._compile (module.js:409:26)
    at Object.Module._extensions..js (module.js:416:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Function.Module.runMain (module.js:441:10)

所以我无法使用'Node.js'配方安装'ws'。 我对yocto并不熟悉所以我不知道如何用'Node.js'安装'ws'。

我知道在普通操作系统中通过此命令npm install ws安装'ws'。 是不可能像这个命令一样在yocto环境中运行?

1 个答案:

答案 0 :(得分:-1)

在处理基于OpenEmbedded的图像时,你必须区分运行时和编译时,就像Poky morty一样。这意味着:

&#34;的运行时&#34;是你实际运行图像并使用它。如果它具有互联网连接,那么您可以安装npm实用程序并按已知方式使用它。这是通过添加&#34; nodejs-npm&#34;对于您的图像,通常是使用IMAGE_INSTALL(如果您已经有自定义图像配方)或CORE_IMAGE_EXTRA_INSTALL(如果它是一次性/第一次测试环境)。 (如果感兴趣,请参阅http://cgit.openembedded.org/meta-openembedded/tree/meta-oe/recipes-devtools/nodejs/nodejs_4.6.1.bb?h=morty#n80以了解内部运作。)

&#34;的编译时&#34;是在创建映像之前,在安装到实际硬件之前。这是OpenEmbedded构建系统的主要优势之一,也是可能难以理解的事情之一。在长项目运行中,您通常希望完全自动化图像创建,以包括您的应用程序以及所有必需的依赖项。在您的情况下,这意味着您必须为ws创建配方,为您的应用程序创建配方,然后让您的应用程序配方依赖于ws。不幸的是,对于npm模块,这仍然在开发中,并且morty并不完全是最新的。因此,如果这不是一次性的修补项目,您可能

我的建议是坚持第一次测试的运行时解决方案,一旦你掌握了基本的东西并且正常工作,如果你正在寻找一个真正的可再生产品,请尽早切换到编译时。在这里,任何尽早使基础设施正确的延迟往往会严重适得其反。如果它仅用于您的一个实验板,您可以坚持运行时解决方案,只要它不符合您的要求。