babel源地图 - 无法正确调试

时间:2017-01-19 11:24:42

标签: node.js async-await babeljs source-maps babel-polyfill

我正在研究一个大学项目,我正在编写后端,节点js与babel一起编译,以便使用async / await

我正在生成源映射以便正确调试但是它做了一些非常糟糕的工作

例如

- 我不能在“if”或“return”语句上放置断点 我担心只有在安装了一些额外的babel插件后才会发生这种情况,我必须在尝试解决一些错误时安装

这是我的package.json:

"axios": "^0.15.3",
"babel-runtime": "^6.20.0",
"body-parser": "^1.15.2",
"chai": "^3.5.0",
"chai-datetime": "^1.4.1",
"ejs": "^2.5.2",
"exceljs": "^0.2.39",
"express": "^4.14.0",
"flat": "^2.0.1",
"generator": "^1.0.1",
"hash": "^0.2.0",
"hash-generator": "^0.1.0",
"mocha": "^3.2.0",
"moment": "^2.17.1",
"mongoose": "^4.7.2",
"nodemailer": "^2.7.0",
"react": "^15.4.1",
"react-bootstrap": "^0.30.7",
"react-bootstrap-table": "^2.9.0",
"react-dom": "^15.4.1",
"react-router": "^3.0.0",
"react-uniform": "^1.2.1",
"rimraf": "^2.5.4",
"underscore": "^1.8.3",
"winston": "^2.3.0",
"winston-mongodb": "^1.6.5"


"devDependencies": {
"babel-cli": "^6.18.0",
"babel-core": "^6.21.0",
"babel-loader": "^6.2.10",
"babel-plugin-transform-runtime": "^6.15.0",
"babel-polyfill": "^6.20.0",
"babel-preset-es2015": "^6.18.0",
"babel-preset-es2016": "^6.16.0",
"babel-preset-latest": "^6.16.0",
"babel-preset-react": "^6.16.0",
"babel-preset-stage-0": "^6.16.0",
"babel-watch": "^2.0.4",
"html-webpack-plugin": "^2.24.1",
"webpack": "^1.13.3",
"webpack-dev-server": "^1.16.2"

它有点削减,但你得到了点

奇怪的是,被转换的js文件看起来奇怪怪异

var addEncouragement = function () {
var _ref = (0, _asyncToGenerator3.default)(_regenerator2.default.mark(function _callee(sessionId, encouragementDetails) {
    var user, encouragement, i, exist, products, res;
    return _regenerator2.default.wrap(function _callee$(_context) {
        while (1) {
            switch (_context.prev = _context.next) {
                case 0:
                    logger.info('Services.Encouragement.index.addEncouragement', { 'session-id': sessionId });
                    _context.next = 3;
                    return permissions.validatePermissionForSessionId(sessionId, 'addEncouragement');

                case 3:
                    user = _context.sent;

                    if (!(user != null)) {
                        _context.next = 29;
                        break;
                    }

                    encouragement = new encouragementModel();

                    encouragement.active = encouragementDetails.active;
                    encouragement.numOfProducts = encouragementDetails.numOfProducts;
                    encouragement.rate = encouragementDetails.rate;

                    //check if all the products id belongs to products
                    i = 0;

                case 10:
                    if (!(i < encouragementDetails.products.length)) {
                        _context.next = 19;
                        break;
                    }

                    _context.next = 13;
                    return dal.getProductById(encouragementDetails.products[i]);

                case 13:
                    exist = _context.sent;

                    if (!(exist == null)) {
                        _context.next = 16;
                        break;
                    }

                    return _context.abrupt('return', { 'encouragement': null, 'code': 404, 'err': 'product not found' });

                case 16:
                    i++;
                    _context.next = 10;
                    break;

                case 19:
                    _context.next = 21;
                    return dal.getProductsById(encouragementDetails);

                case 21:
                    products = _context.sent;

                    encouragement.products = products;

                    _context.next = 25;
                    return dal.addEncouragement(encouragement);

                case 25:
                    res = _context.sent;
                    return _context.abrupt('return', { 'encouragement': encouragement, 'code': 200, 'err': null });

                case 29:
                    return _context.abrupt('return', { 'encouragement': null, 'code': 401, 'err': 'permission denied' });

                case 30:
                case 'end':
                    return _context.stop();
            }
        }
    }, _callee, this);
}));

虽然这是源函数:

let addEncouragement = async function(sessionId, encouragementDetails) {
logger.info('Services.Encouragement.index.addEncouragement', {'session-id': sessionId});
let user = await permissions.validatePermissionForSessionId(sessionId, 'addEncouragement');
//check if to user have the permissions
if(user != null) {
    let encouragement = new encouragementModel();
    encouragement.active = encouragementDetails.active;
    encouragement.numOfProducts = encouragementDetails.numOfProducts;
    encouragement.rate = encouragementDetails.rate;

    //check if all the products id belongs to products
    for (let i = 0; i < encouragementDetails.products.length; i++) {
       let exist = await dal.getProductById(encouragementDetails.products[i]);
       if(exist == null){
           return {'encouragement': null, 'code': 404, 'err': 'product not found'};
       }
    }

    //create id object from the string id
    let products = await dal.getProductsById(encouragementDetails);
    encouragement.products = products;

    let res = await dal.addEncouragement(encouragement);
    return {'encouragement': encouragement, 'code': 200, 'err': null};
}
else{
    return {'encouragement': null, 'code': 401, 'err': 'permission denied'};
}

};

这是文件的开头:

"use strict";
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

我会感激任何帮助,或者如果有人能告诉我这里的错误以及为什么我无法正确调试

谢谢

0 个答案:

没有答案