parseBabel.js 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.getBabelError = getBabelError;
  6. var _chalk = _interopRequireDefault(require("next/dist/compiled/chalk"));
  7. var _simpleWebpackError = require("./simpleWebpackError");
  8. function _interopRequireDefault(obj) {
  9. return obj && obj.__esModule ? obj : {
  10. default: obj
  11. };
  12. }
  13. const chalk = new _chalk.default.constructor({
  14. enabled: true
  15. });
  16. function getBabelError(fileName, err) {
  17. if (err.code !== "BABEL_PARSE_ERROR") {
  18. return false;
  19. }
  20. // https://github.com/babel/babel/blob/34693d6024da3f026534dd8d569f97ac0109602e/packages/babel-core/src/parser/index.js
  21. if (err.loc) {
  22. const lineNumber = Math.max(1, err.loc.line);
  23. const column = Math.max(1, err.loc.column);
  24. let message = err.message// Remove file information, which instead is provided by webpack.
  25. .replace(/^.+?: /, "")// Remove column information from message
  26. .replace(new RegExp(`[^\\S\\r\\n]*\\(${lineNumber}:${column}\\)[^\\S\\r\\n]*`), "");
  27. return new _simpleWebpackError.SimpleWebpackError(`${chalk.cyan(fileName)}:${chalk.yellow(lineNumber.toString())}:${chalk.yellow(column.toString())}`, chalk.red.bold("Syntax error").concat(`: ${message}`));
  28. }
  29. return false;
  30. }
  31. //# sourceMappingURL=parseBabel.js.map