Зачем распространять синтаксические ошибки в nodejs - PullRequest
0 голосов
/ 21 декабря 2018

Я использую этот код для создания документа.Что работает, как и ожидалось.

await Promise.all(
  payload.exercises.map(async(exercise) => {
      exercise.user = user
      exercise.workoutName = payload.workoutName
      await Exercise.create(exercise)
  })
)

Но для оптимизации кода я хочу использовать синтаксис распространения с exercise объектом

await Promise.all(
  payload.exercises.map(async(exercise) => {
      await Exercise.create({ ...exercise, user, workoutName: payload.workoutName })
  })
)

Но когда я его скомпилирую, выдает ошибку Unexpected token (58:36)

Может кто-нибудь помочь, почему я не могу использовать это на заднем конце, в то время как могу просто использовать это на переднем конце reactjs

.babelrc file

{
  "presets": [
    ["env", {
      "targets": {
        "node": "11.5.0"
      }
    }]
  ],
  "env": {
    "test": {
      "plugins": ["istanbul"]
    }
  }
}

package.json

{
  "main": "index.js",
  "scripts": {
    "start:dev": "nodemon ./src/index.js",
    "start": "npm run build && node ./build/index.js",
    "build": "babel src -d build -s --source-maps --copy-files",
    "seed": "babel-node ./seeders/index.js",
  },
  "dependencies": {
    "@sendgrid/mail": "^6.2.1",
    ...
  },
  "devDependencies": {
    "async": "2.3.0",
    "babel-cli": "6.24.0",
    "babel-core": "6.24.0",
    "babel-eslint": "7.2.1",
    "babel-plugin-istanbul": "4.1.1",
    "babel-polyfill": "6.23.0",
    "babel-preset-env": "^1.2.2",
    "babel-preset-node6": "11.0.0",
    "chalk": "1.1.3",
    "chance": "1.0.6",
    "eslint": "3.19.0",
    "eslint-config-walmart": "1.2.2",
    "eslint-plugin-filenames": "1.1.0",
    "eslint-plugin-import": "2.2.0",
    "lab-babel": "1.1.1",
  }
}

1 Ответ

0 голосов
/ 23 декабря 2018

Буду откровенен: я не совсем уверен, в чем проблема с вашей конфигурацией Babel в Babel v6.Может быть, есть некоторые проблемы с модулями npm, связанные с переходом с v6 на v7, хотя я думал, что все изменения именования справились с этим.Я больше не использую Babel v6.

После воспроизведения вашей проблемы я смог решить ее с помощью Babel v7.Вот как:

  1. Я удалил все записи Babel из devDependencies в package.json, так что это выглядит так:

    "devDependencies": {
      "async": "2.3.0",
      "chalk": "1.1.3",
      "chance": "1.0.6",
      "eslint": "3.19.0",
      "eslint-config-walmart": "1.2.2",
      "eslint-plugin-filenames": "1.1.0",
      "eslint-plugin-import": "2.2.0",
      "lab-babel": "1.1.1"
    }
    
  2. Полностью удалено node_modules

  3. Воссоздано node_modules:

    npm install
  4. Установлено Babel v7 (к сожалению, текущие документы, которыеутверждают, что для v7.1.0 есть неправильная строка установки для CLI, я подал проблему ) :

    npm install --save-dev @babel/core @babel/cli @babel/preset-env

    ... которая дает мне эти devDependencies:

    "devDependencies": {
      "@babel/cli": "^7.2.3",
      "@babel/core": "^7.2.2",
      "@babel/preset-env": "^7.2.3",
      "async": "2.3.0",
      "chalk": "1.1.3",
      "chance": "1.0.6",
      "eslint": "3.19.0",
      "eslint-config-walmart": "1.2.2",
      "eslint-plugin-filenames": "1.1.0",
      "eslint-plugin-import": "2.2.0",
      "lab-babel": "1.1.1"
    }
    
  5. Гарантировано, что .babelrc был настроен для использования нового @babel/env:

    {
      "presets": [
        ["@babel/env", {
            targets: {
                "node": "11.5.0"
            }
        }]
      ],
      "env": {
        "test": {
          "plugins": ["istanbul"]
        }
      }
    }
    

Затем,npm run build работал как положено.Синтаксис распространения остался один (поскольку Node v11.5.0 изначально поддерживает его).

Просто чтобы быть уверенным, поскольку более ранняя версия вашего вопроса использовала "node": 4.3 (4.3 должно быть в кавычках, кстати)), Я переключился на это, и он работал просто отлично, передавая синтаксис распространения (и async / await и множество других вещей, поскольку Node.js v4.3 действительно устарел).

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