V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shimingzhoudf
V2EX  ›  Node.js

nodejs、浏览器

  •  
  •   shimingzhoudf · 2019-05-07 09:46:14 +08:00 · 5433 次点击
    这是一个创建于 2057 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在浏览器中的 js 引用 nodejs 模块,引用 mysql 模块报错

    Uncaught TypeError: Net.createConnection is not a function at Connection.connect

    15 条回复    2019-05-09 18:18:26 +08:00
    wly19960911
        1
    wly19960911  
       2019-05-07 10:05:51 +08:00
    为什么我没有听懂你想干什么,你想在浏览器里面直接连接 mysql ?

    连接 mysql 至少需要能调用 tcp 的能力吧,ssh 也行,这两个浏览器都不支持。你的运行环境是基于浏览器的 js,api 都是浏览器提供的,不是单独的 nodejs 运行环境。
    EulerChen
        2
    EulerChen  
       2019-05-07 10:07:41 +08:00
    浏览器中一般不能使用 Node 模块
    shimingzhoudf
        3
    shimingzhoudf  
    OP
       2019-05-07 10:14:43 +08:00
    Browserify 这个工具不是能够打包 nodejs 工具包吗,引用 nodejs 模块
    est
        4
    est  
       2019-05-07 10:15:13 +08:00
    用 MySQL HTTP Plugin
    https://labs.mysql.com/


    要什么自行车。
    JK9993
        5
    JK9993  
       2019-05-07 10:28:06 +08:00 via iPhone
    @shimingzhoudf 部分模块可以,像是文件模块之类就不行
    ZehaiZhang
        6
    ZehaiZhang  
       2019-05-07 10:29:34 +08:00
    很奇怪为什么会有这种需求?
    ZehaiZhang
        7
    ZehaiZhang  
       2019-05-07 10:29:57 +08:00
    为什么不直接写 SSR,让后端去渲染前端,而不是前端带上后端
    wly19960911
        8
    wly19960911  
       2019-05-07 10:38:33 +08:00
    @shimingzhoudf #3 理解下什么是环境,环境都不提供那个功能,你安装啥都没用。nodejs 的 server 可以 mysql 是因为 nodejs 的环境是 linux,或者他的环境就直接提供 tcp,浏览器不提供 tcp。只提供 http 和 websocket。
    jrtzxh020
        9
    jrtzxh020  
       2019-05-07 11:00:40 +08:00 via iPhone
    浏览器都能直连 mysql 还要后端干啥?
    marsgt
        10
    marsgt  
       2019-05-07 11:15:31 +08:00
    @shimingzhoudf
    javascript 一般分浏览器端 js 和后端 js (一般是 Node.js )的,浏览器端 js 一般由于浏览器沙箱(可以理解为一种安全措施)的缘故,没办法拿到诸如文件、进程等权限,或者也可以说在浏览器的 js 执行环境不提供这些 API 接口,所以才会有诸如 IE 的 ActiveX 之类的东西,通过浏览器插件的方式才可以拿到一些高级权限。而你直接运行肯定是没戏的,所以需要开个后端服务。本地跑的话装个 Node.js 然后搞个框架(比如 Express 之类的)把服务搭起来,然后前端就能访问了。

    不过不太清楚你想存什么东西,前端也有页面级别的存储。当然既然是存到浏览器(客户端)上,肯定会丧失一些保密性。懒得折腾的话可以直接看下 localForage ( https://github.com/localForage/localForage )这个库( Mozilla 家的),中文文档可以看 docschina 的( https://localforage.docschina.org/ ),它给了个通用接口(存储类型是 key-value 的),这样就不用关心底层具体的技术细节了。
    shimingzhoudf
        11
    shimingzhoudf  
    OP
       2019-05-07 11:25:07 +08:00
    @marsgt 谢谢
    wozhizui
        12
    wozhizui  
       2019-05-07 13:35:22 +08:00
    做接口,基于 restful 协议,后端用 node 查数据库,提供数据,通过接口传递给前端的请求。
    mikoshu
        13
    mikoshu  
       2019-05-07 13:58:03 +08:00
    要在浏览器里用 node 模块 你可以考虑用 nwjs 这些集成 nodejs 的定制浏览器 也可以认为是 app 可以做成桌面应用
    fengbjhqs
        14
    fengbjhqs  
       2019-05-07 14:45:01 +08:00
    如果楼主用 electron,这个问题是成立的,
    渲染进程算浏览器的话,是可以调用 mysql 模块,
    redbuck
        15
    redbuck  
       2019-05-09 18:18:26 +08:00
    分清楚环境啊.

    比如 fs 模块,它要调用系统文件系统,你觉得到了浏览器它能工作吗?

    有一些包是同时支持 node/浏览器端,比如 axios,mockjs,但人家是特殊处理过的,打包都得打 UMD 格式.用包之前看清楚是什么环境的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3481 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 11:10 · PVG 19:10 · LAX 03:10 · JFK 06:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.