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

node 搞后端怎么样?

  •  
  •   fxjson · 2022-05-24 07:38:15 +08:00 via Android · 5100 次点击
    这是一个创建于 944 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有 nodejs 写后端的大佬,报个错不能准确的提示到哪行错了,调试好恶心,怎么办?

    zsp1987
        1
    zsp1987  
       2022-05-24 07:53:42 +08:00 via Android
    为啥不能 debug ,跟别的语言没区别。
    fortunezhang
        2
    fortunezhang  
       2022-05-24 08:22:21 +08:00
    挺好用。
    只不过我不喜欢使用回调,性能虽然好,但是读起来会比较麻烦。 所以一直用 async/await
    des
        3
    des  
       2022-05-24 08:56:59 +08:00 via iPhone
    找不到哪行报错?建议上代码
    lujiaosama
        4
    lujiaosama  
       2022-05-24 08:57:06 +08:00
    为什么不能准确提示? 你用了 ts 么.
    des
        5
    des  
       2022-05-24 09:02:25 +08:00 via iPhone
    隐约感觉 op 是别的语言用习惯了,刚过来写 js ,不顺手
    Vaspike
        6
    Vaspike  
       2022-05-24 09:09:50 +08:00
    @fortunezhang #2
    同,我写 es6 的 js 都不习惯用回调
    kingterrors
        7
    kingterrors  
       2022-05-24 09:14:30 +08:00
    @Vaspike async await 好像在 debug 的时候无法定位到准确位置吧?
    ---
    另外 nodejs 的 debug ,用 vscode 创建 launch 配置文件,简单查一下如何配置,并不是很难哦
    v23x
        8
    v23x  
       2022-05-24 10:36:24 +08:00
    别说哪行报错了...哪行的哪个位置不是都有吗..

    回调这种东西 都是从阻塞 同步 一行一行代码执行 这种思维里面开始的

    熟练点之后 回调和异步 非阻塞这种东西都是必然的

    比如数据库 io 可能你习惯了阻塞操作等有了结果再下一步 很方便

    但是这种代码实践肯定是不推荐的
    libook
        9
    libook  
       2022-05-24 15:43:45 +08:00
    我用 Node.js 写过 7 年后端,其中包括一些像交易系统之类的复杂业务,感觉还挺好用的。

    前提是十分熟练掌握 JS 。因为 JS 是一个十分灵活的语言,所以对开发者要求很高,否则很容易写出存在缺陷或不容易 debug 的代码。

    异步代码需要注意 catch 才能获得错误信息,不 catch 肯定不知道错误在哪;而且 Error 也需要准确构造和传递,否则也拿不到原始错误信息。

    @kingterrors #7 async 和 await 是可以定位到准确位置的。
    ychost
        10
    ychost  
       2022-05-24 16:14:28 +08:00
    node 确认报错不优化,有时候还是底层的问题,不过拿来做轻量服务端美滋滋
    magicdawn
        11
    magicdawn  
       2022-05-24 17:30:50 +08:00
    有时候异步代码也 catch 不到, 比如

    process.nextTick(() => {
    throw new Error('boom')
    })

    嘿嘿
    mikulch
        12
    mikulch  
       2022-05-25 16:52:20 +08:00
    @libook 最近正在用 ts 写后端的 node 。一行代码还没开始写,先配了 6 个配置文件。可能这就是新世纪的 java
    mikulch
        13
    mikulch  
       2022-05-25 17:11:51 +08:00
    https://www.v2ex.com/t/855252#reply0

    已经卡了一天了,看敢不敢用哇。
    mikulch
        14
    mikulch  
       2022-05-25 17:13:55 +08:00
    @des 大佬帮忙看看。
    libook
        15
    libook  
       2022-05-25 17:27:32 +08:00
    @mikulch #12 我个人不大喜欢 TS ,平时也用得少,我更喜欢纯 JS+JSDoc ,写得够规范、IDE 够智能的话也可以完成 TS 那样的类型检查。如果用纯 JS 写的话,不用第三方 modules 甚至 0 配置文件就可以写个服务,比如我手写过一个 Gitlab 的 hook 服务,就一个 js 文件,直接 node 指令运行就可以了。

    凡使用工具就一定会有收益和成本,对于 TS 来说,类型检查是收益,而配置麻烦就是成本,但好在企业生产中大多项目只需要配置一次,而且绝大多配置都可以通过 git 传递给其他协作者。

    工具是用来解决问题的,不是用来引入更多麻烦的,按需要使用,没需求就没必要硬上。
    wangtian2020
        16
    wangtian2020  
       2022-05-26 16:16:28 +08:00
    写 nodejs 一定要会 promise ,async function ,不然写起来极其痛苦
    报错是有提示的,除非是写的特别奇怪的代码(比如新手代码)

    不要用回调的嵌套写法,一步到位直接学 async await
    https://zh.javascript.info/async-await
    wangtian2020
        17
    wangtian2020  
       2022-05-26 16:17:16 +08:00
    #16 也不能说是痛苦,只能说是不爽
    FreshOldMan
        18
    FreshOldMan  
       2022-06-03 14:25:21 +08:00
    debug 这个,webstorm 直接可以啊
    afeiche
        19
    afeiche  
       2022-06-17 16:27:00 +08:00
    异常捕获的话,把 process 的 unhandledRejection 和 uncaughtException 都加上,否则有些异常捕获不到
    Makabaka01
        20
    Makabaka01  
       2022-06-19 10:28:07 +08:00
    @mikulch 不会吧,node 的话一般 tsc 做编译就行了,只需要一个 tsconfig
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3638 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:38 · PVG 12:38 · LAX 20:38 · JFK 23:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.