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

Node.js 使用 ES6 在 Visual Studio Code 中调试?

  •  
  •   YYYeung · 2017-09-18 00:47:24 +08:00 · 6686 次点击
    这是一个创建于 2623 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Node.js 目前好像不完全支持 import, 箭头函数,但是可以使用 babel 进行转译,但这样的话,调试的时候,只能把断点打在转译后的文件才能生效

    问题是:有没有办法可以让断点停在原始文件上?

    使用的是 Visual Studio Code, 有没有相关的插件可以实现?或者,其他 IDE?

    谢谢了!

    第 1 条附言  ·  2017-09-26 10:47:32 +08:00

    最后的解决方法是添加 sourcemap, 但是可能还会有一个问题,这个问题是 Visual Studio Code Version 1.16.1 (1.16.1) 中的一个 bug.

    解决的方法是在 launch.json 中再添加一项配置 outFiles, 值为转译后代码的路径

    为此,也向 vscode 那边提了一个 👉 issue

    同时,也写了一篇文章,记录一下解决问题过程中的历程,说不定以后回顾的时候可以用上,可能要被公司拉去写 Java 了。。。

    👉 那篇文章

    11 条回复    2017-09-18 09:48:53 +08:00
    Rice
        1
    Rice  
       2017-09-18 01:01:38 +08:00 via iPhone
    有,用 source map
    Rice
        2
    Rice  
       2017-09-18 01:02:37 +08:00 via iPhone   ❤️ 1
    你试试在 babel 的配置文件里开启 source map,我记不太清了
    1OF7G
        3
    1OF7G  
       2017-09-18 08:31:23 +08:00
    ES6 的模块系统刚刚支持,但 ES6 的其他特性早就支持了,用的 V8 引擎所以基本和 Chrome 一样的进度。
    你应该升级你的 Node 了
    PythonAnswer
        4
    PythonAnswer  
       2017-09-18 08:35:41 +08:00
    node 现在完全支持 es6 了吗?想用了。。
    duan602728596
        5
    duan602728596  
       2017-09-18 08:40:04 +08:00 via iPhone
    node 早就能用了
    YardWill
        6
    YardWill  
       2017-09-18 08:47:35 +08:00
    v8 最新版本 60 已经支持 import node V8.5.0 也已经支持 import 箭头函数这种早就支持了 升级 node 版本 直接打断点就好
    quxiangxuanqxx
        7
    quxiangxuanqxx  
       2017-09-18 09:05:00 +08:00 via Android
    node 现在的 stable 是 8 升级吧,都支持
    YYYeung
        8
    YYYeung  
    OP
       2017-09-18 09:43:07 +08:00
    @1OF7G
    @PythonAnswer
    @duan602728596
    @zjwengyidong
    @quxiangxuanqxx

    node 8.5 对模块的支持需要将文件后缀名改为 .mjs, 运行时候也需要加上 --experimental-modules, 不知道正式支持的时候,是不是能直接后缀名 .js
    YYYeung
        9
    YYYeung  
    OP
       2017-09-18 09:45:34 +08:00
    同时,vscode 里面安装了 Node.js Modules Intellisense 来检测模块的话,mjs 文件是不扫描的,需要在 user settings 里面添加多一项 ".mjs"

    ```
    "node-module-intellisense.fileModuleExtensions": [
    ".js",
    ".jsx",
    ".ts",
    ".d.ts",
    ".tsx",
    ".vue",
    ".json",
    ".mjs"
    ],
    ```
    vghdjgh
        10
    vghdjgh  
       2017-09-18 09:47:31 +08:00 via Android   ❤️ 1
    不需要插件
    1.像 2 楼说的那样,转译后要有 sourcemap 文件
    2.在 launch.json 里把 sourcemap 设为 true,如果失败,说明 vscode 找不到生成的 sourcemap 文件,还要在 launch.json 里配置一下路径。
    ianchn
        11
    ianchn  
       2017-09-18 09:48:53 +08:00   ❤️ 1
    楼上有些不负责任的乱说,还好楼主自己不糊涂。同一楼 babel 加上 source map。[文档]( https://babeljs.io/docs/usage/cli/#babel-compile-with-source-maps)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2519 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:43 · PVG 23:43 · LAX 07:43 · JFK 10:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.