簡體   English   中英

"使用 VSCode 調試無服務器離線功能 - 源映射問題?"

[英]Debugging servlerless offline function with VSCode - source map issue?

我使用無服務器為 AWS Lambda 創建了一個簡單的郵件函數。 對於開發,我使用 serverless-offline 來復制 Lambda 的功能並使用 VSCode 作為我的 IDE。 我也在使用 serverless-webpack 來生成我的結果代碼。

在 VSCode 中的代碼中設置斷點時,它們被挖空並被標記為“未綁定”並且不會觸發,但是當我插入debugger; 語句,執行應該停止。 (作為旁注, debugger;並將我放在我的源文件中 - 而不是我的結果文件中 - 不確定這是為什么 - webpack 魔術?我在這里沒有設置源映射,這可能是這里問題的一部分,但真的不確定)

我的 VSCode 啟動我的無服務器離線調試實例的 launch.json 配置是:

    {
        "name": "serverless",
        "type": "node",
        "request": "launch",
        "cwd": "${workspaceFolder}/serverless",
        "runtimeExecutable": "/home/me/.nvm/versions/node/v14.7.0/bin/npm",
        "runtimeArgs": [
            "run",
            "debug"
        ],
        "port": 9229
    }

觸發的 npm 腳本是:

"debug": "export SLS_DEBUG=* && node --lazy ./node_modules/.bin/serverless offline -s dev"

serverless-webpack 使用的配置(純粹是為了讓我可以注入一些環境變量)是:

const slsw = require('serverless-webpack');
const Dotenv = require('dotenv-webpack');
const path = require('path');

const stage = slsw.lib.options.stage == 'prod' ? 'production' : 'development'

module.exports = {
    mode: stage,
    entry: slsw.lib.entries,
    target: 'node',
    plugins: [
        new Dotenv({
            path: path.resolve(__dirname, '../.env.'.concat(stage)),
            safe: false,
            allowEmptyValues: false,
            silent: false
        })
    ]
}

任何幫助表示贊賞! 只是想知道如何使用常規斷點正常調試,而不必依賴插入debugger; 無論我想檢查正在運行的代碼。

我的團隊使用serverless-bundle<\/code>遇到了與此類似的問題,它基本上只是serverless-webpack<\/code>之上的一個抽象層。 在我們的案例中,有幫助的是在我們的調試配置對象中添加如下內容:

"sourceMapPathOverrides": {
  "webpack:///./~/*": "${workspaceFolder}/node_modules/*",
  "webpack://?:*/*": "${workspaceFolder}/.webpack/*"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM