node 搞后端怎么样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fxjson
V2EX    Node.js

node 搞后端怎么样?

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

    有没有 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
    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     Solana     3660 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 10:38 PVG 18:38 LAX 03:38 JFK 06:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86