SyntaxError при выполнении сценария NPM - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь обновить зависимости приложения React.Это приложение включает в себя скрипт, определенный в package.json, который генерирует пакет сообщений для каждой локали.

"scripts": {
  "build:langs": "NODE_ENV=production babel-node scripts/mergeMessages.js"
}

Детали скрипта не важны, но он очень похож на этот ,который описан в response-intl учебнике .

До обновления зависимостей скрипт работал, но теперь, когда я выполняю npm run build:langs в командной строке, я получаю эту ошибку:

/applications/my-app/scripts/mergeMessages.js:1
import _objectSpread from "/applications/my-app/node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread";
       ^^^^^^^^^^^^^

SyntaxError: Unexpected identifier
    at Module._compile (internal/modules/cjs/loader.js:703:23)
    at Module._compile (/applications/my-app/node_modules/pirates/lib/index.js:99:24)
    at Module._extensions..js (internal/modules/cjs/loader.js:770:10)
    at Object.newLoader [as .js] (/applications/my-app/node_modules/pirates/lib/index.js:104:7)
    at Module.load (internal/modules/cjs/loader.js:628:32)
    at Function.Module._load (internal/modules/cjs/loader.js:555:12)
    at Function.Module.runMain (internal/modules/cjs/loader.js:824:10)
    at Object.<anonymous> (/applications/my-app/node_modules/@babel/node/lib/_babel-node.js:234:23)
    at Module._compile (internal/modules/cjs/loader.js:759:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)

Я полагаю, что зависимости от babel наиболее актуальны.До обновления это были:

"babel-core": "6.26.0",
"babel-eslint": "7.2.3",
"babel-loader": "7.1.2",
"babel-plugin-react-intl": "2.4.0",
"babel-preset-react-app": "3.1.2",
"babel-cli": "6.26.0",

После обновления следующие зависимости:

"@babel/core": "7.4.4",
"@babel/polyfill": "7.4.4",
"@babel/register": "7.4.4",
"babel-eslint": "10.0.1",
"babel-loader": "8.0.5",
"babel-plugin-named-asset-import": "^0.3.2",
"babel-preset-react-app": "^8.0.0",
"babel-plugin-react-intl": "2.4.0",
"@babel/cli": "~7.4.4",
"@babel/node": "7.2.2",

Обновление

У меня нет ни .babelrcили babel.config.js файл конфигурации, просто следующий в package.json

"babel": {
  "presets": [
    "react-app"
  ]
}

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Если вы используете babel-7, вам необходимо иметь следующее:

Попробуйте использовать @babel/preset-react вместо babel-preset-react-app.

"@babel/core": "^7.4.4",
"@babel/plugin-proposal-class-properties": "^7.4.4",
"@babel/preset-env": "^7.4.4",
"@babel/preset-react": "^7.0.0",
"babel-loader": "^8.0.5",

и babel-config в пакете..json должен быть:

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-proposal-class-properties"
  ]
}
1 голос
/ 08 мая 2019

Из руководства по миграции Babel 7 :

Команда babel-node в Babel 6 была частью пакета babel-cli.В Вавилоне 7 эта команда была разделена на собственный пакет @babel/node, поэтому, если вы используете эту команду, вы захотите добавить эту новую зависимость.

...