Node js app не развертывает на heroku выдает ошибку `восьмеричные литералы не допускаются в строгом режиме` - PullRequest
1 голос
/ 12 июня 2019

Когда я нажимаю на heroku master, мое развертывание завершается сбоем со следующей ошибкой:

remote: { SyntaxError: /tmp/build_396711075a2ae75358d2c942f9c73c1c/.heroku/node/lib/node_modules/npm/node_modules/cmd-shim/index.js: Legacy octal literals are not allowed in strict mode (166:15)
remote: 
remote:   164 | function chmodShim (to, cb) {
remote:   165 |   var then = times(2, cb, cb)
remote: > 166 |   fs.chmod(to, 0755, then)
remote:       |                ^
remote:   167 |   fs.chmod(to + ".cmd", 0755, then)
remote:   168 | }
remote:   169 | 
remote:     at Parser.raise (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:6344:17)
remote:     at Parser.readNumber (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:7194:14)
remote:     at Parser.getTokenFromCode (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:6966:14)
remote:     at Parser.nextToken (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:6542:12)
remote:     at Parser.next (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:6482:10)
remote:     at Parser.eat (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:6487:12)
remote:     at Parser.expect (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:7645:10)
remote:     at Parser.parseCallExpressionArguments (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:8605:14)
remote:     at Parser.parseSubscript (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:8515:29)
remote:     at Parser.parseSubscripts (/tmp/build_396711075a2ae75358d2c942f9c73c1c/node_modules/@babel/parser/lib/index.js:8434:19)
remote:   pos: 4390,
remote:   loc: Position { line: 166, column: 15 },
remote:   code: 'BABEL_PARSE_ERROR' }

Моя конфигурация babel такая, как показано ниже:

{
  "presets": [
    [
    "@babel/preset-env", {
      "targets": {
        "node": "current"
      }
    }
  ]
],
  "plugins": [
    "@babel/plugin-proposal-object-rest-spread",
    ["@babel/plugin-transform-classes", {
      "loose": true
    }]
  ]
}

В чем может быть проблема

1 Ответ

0 голосов
/ 12 июня 2019

0755 интерпретируется как восьмеричное число, которое все начинаются (правка: используется для запуска) с 0 в javascript, отсюда и ошибка.Таким образом, 0755 технически является десятичным числом 493. Его интерпретируют таким образом.

Реальная проблема здесь в том, что нет такой вещи, как начальные нули для чисел.

Быстрое решение состоит в том, чтобы либо использоватьчисло 755, без начального 0 или используйте строку "0755".Не знаю, как это повлияет на остальную часть кода.Если требуется восьмеричное значение, возможно, у babel есть параметры синтаксического анализа восьмеричных чисел, которые вы можете добавить в конфигурацию?

EDIT :

По-видимому, также запрещено использовать восьмеричные литералы с этимсинтаксис в строгом режиме.

Число с начальным нулем в JavaScript

Так что если вам нужно восьмеричное число, попробуйте 0o755.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...