首页 > 解决方案 > 通过cordova执行npm模块

问题描述

我使用cordova创建了一个应用程序,一切都很好,预计我需要使用一个没有客户端等效项的节点模块,因为我正在处理文件写入流等。我发现Cordova钩子是我最好的选择到目前为止,我创建了一个app_run钩子来执行一个节点文件,该文件运行一个套接字服务器来监听来自客户端的事件。

我知道,一个非常冗长的解决方案,但对我来说似乎逻辑上是正确的,问题是当我创建服务器,通过 Visual Studio 2017 构建应用程序时,应用程序在我的 android 手机上启动,但 VS 挂在“部署”阶段。我猜它与事件链有关,所以我创建了一个这样的异步脚本:

(async function () {
    const server = require('http').createServer()
    const io = require('socket.io')(server)

    io.on('connection', function (socket) {
        console.log('heyo')
        socket.emit('hello world', 'hi')
    })

    server.listen(3000, function (err) {
        if (err) throw err
        console.log('listening on port 3000')
    })
})();

但这似乎也不起作用,不知何故 VS 挂在“部署”上。如果有人可以指导我正确的方向,那将不胜感激。

PS:我知道标题已关闭,但每次我使用 StackOverflow 来获得特定尝试的帮助时,都会被告知要以另一种方式进行,所以我会保持打开状态。

标签: javascriptnode.jscordovaasynchronousnode-modules

解决方案


如果目标是在您的科尔多瓦应用程序中使用 socket.io,那么您需要使用一个用于 Web 的 JS 客户端,并且您不需要为此使用 npm,只需在您的客户端 js 文件中添加一个链接即可索引文件。(当您通过 npm 初始化 socket.io 时,应该在“客户端”文件夹中)。

 <script src="/socket.io/socket.io.js"></script>
 <script>
    const socket = io('http://localhost');
 </script>

https://socket.io/docs/client-api/


推荐阅读