javascript - 通过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 来获得特定尝试的帮助时,都会被告知要以另一种方式进行,所以我会保持打开状态。
解决方案
如果目标是在您的科尔多瓦应用程序中使用 socket.io,那么您需要使用一个用于 Web 的 JS 客户端,并且您不需要为此使用 npm,只需在您的客户端 js 文件中添加一个链接即可索引文件。(当您通过 npm 初始化 socket.io 时,应该在“客户端”文件夹中)。
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io('http://localhost');
</script>
推荐阅读
- java - 如果我的网关已经得到保护,为什么我必须保护我的资源服务?
- android - Android Jetpack Compose 宽度/高度/尺寸修饰符 vs requiredWidth / requiredHeight / requiredSize
- r - 如何在没有列名的情况下访问 R 中的特定行和特定列?
- python - 如何在 discord.py 中获取头像 url
- python - 为什么线程使用类作为参数?
- node.js - AWS Lambda:错误:ENOENT:没有这样的文件或目录,mkdir '/var/task/node_modules/@types/nexus-typegen'
- python - RegEx:逗号分隔的对列表
- excel - 跨工作表的平均相同单元格 - 排除零/错误
- css - 如何在按钮活动css中设置阴影
- python - scipy.stats.t.std() 中的“scale”参数代表什么?