【问题标题】:"fs is not defined" How can I use fs within a VueJS file“fs 未定义”如何在 VueJS 文件中使用 fs
【发布时间】:2020-06-28 23:14:57
【问题描述】:

我一直在网上进行研究,许多其他人也遇到了类似的问题,但仍未解决。

为什么我不能在 VueJS 文件中使用 fs,我读到它不能在客户端调用,但是它在文档中使用,所以我做错了什么?

https://socket.io/docs/client-api/#With-a-self-signed-certificate

socket.js 文件:


const fs = require('fs');

var https = require('https').createServer(app, {
  key: fs.readFileSync('server-key.pem'),
  cert: fs.readFileSync('server-cert.pem'),
  passphrase: ''
});

chat.js 文件:

import io from 'socket.io-client';

const socket = io('my_public_ip:port', {
  ca: fs.readFileSync('server-cert.pem'),  //unable to read fs here
});

【问题讨论】:

    标签: node.js vue.js socket.io openssl fs


    【解决方案1】:

    fs 是 Node.js 中的一个模块,出于安全原因,浏览器不支持禁止直接文件系统操作。

    【讨论】:

    • 有没有其他方法可以为此申请证书?或者如果我的域有 SSL,我什至需要这个?
    【解决方案2】:

    在我看来,这是对“客户”概念的误解:

    • “客户端”,在套接字术语中,可以是任何能够连接到套接字服务器的软件(例如:服务器、浏览器、移动应用程序、游戏...)

    • “服务器”,在套接字术语中,是负责接受连接、收集客户端的代理。

    根据模块 (fs) 本身,它不能在浏览器环境中运行,因为它依赖于 Node.js 核心,该核心捆绑在 Node.js 安装包中,并且仅在 Node.js 服务器上可用。

    在浏览器端,为了连接到安全 (https) 套接字服务器,您只需在连接时设置 secure 参数,如下所示:

    const socket = io.connect('my_public_ip:port', { secure: true });
    

    【讨论】:

    • 使用 https 我得到一个控制台错误GET https://public_ip:port/socket.io/?EIO=3&transport=polling&t=N3gvsj1 net::ERR_SSL_VERSION_OR_CIPHER_MISMATCH 和使用 http http:/public_ip:port/socket.io/?EIO=3&transport=polling&t=N3guku9 net::ERR_EMPTY_RESPONSE
    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2021-05-04
    • 2021-12-04
    • 2021-02-21
    • 2018-10-18
    • 2021-12-24
    • 2022-01-13
    相关资源
    最近更新 更多