我正在研究一个大学项目,我正在编写后端,节点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 }; }
我会感激任何帮助,或者如果有人能告诉我这里的错误以及为什么我无法正确调试
谢谢