Не удается запустить приложение Node (server.js, возможно, проблема с Babel?) - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь запустить приложение Node для запуска с npm.Приложение падает при запуске, и я не знаю, почему.Я действительно новичок в Node и все вещи в стеке.Кто-нибудь может понять, что происходит?

Когда я запускаю npm start --verbose, я получаю следующее:

hunterhawley@hunter-test:~$ npm start --verbose
npm info it worked if it ends with ok
npm verb cli [ '/home/hunterhawley/.nvm/versions/node/v11.10.1/bin/node',
npm verb cli   '/home/hunterhawley/.nvm/versions/node/v11.10.1/bin/npm',
npm verb cli   'start',
npm verb cli   '--verbose' ]
npm info using npm@6.7.0
npm info using node@v11.10.1
npm verb config Skipping project config: /home/hunterhawley/.npmrc. (matches userconfig)
npm verb run-script [ 'prestart', 'start', 'poststart' ]
npm info lifecycle mern-starter@2.0.0~prestart: mern-starter@2.0.0
npm info lifecycle mern-starter@2.0.0~start: mern-starter@2.0.0

> mern-starter@2.0.0 start /home/hunterhawley
> cross-env BABEL_DISABLE_CACHE=1 NODE_ENV=development nodemon index.js

[nodemon] 1.17.5
[nodemon] reading config ./nodemon.json
[nodemon] to restart at any time, enter `rs`
[nodemon] or send SIGHUP to 31462 to restart
[nodemon] ignoring: .git node_modules/**/node_modules
[nodemon] watching: /home/hunterhawley/server/**/* Intl
[nodemon] watching extensions: js,json
[nodemon] starting `node index.js`
[nodemon] forking
[nodemon] child pid: 31475
[nodemon] watching 37 files
/home/hunterhawley/node_modules/babel-core/lib/transformation/file/index.js:558
      throw err;
      ^

SyntaxError: /home/hunterhawley/server/server.js: Unexpected token (164:8)
  162 |     const store = configureStore({
  163 |       app: {
> 164 |         ...initialAppState,
      |         ^
  165 |         user: { ...req.session.user },
  166 |       },
  167 |     });
    at Parser.pp$5.raise (/home/hunterhawley/node_modules/babylon/lib/index.js:4454:13)
    at Parser.pp.unexpected (/home/hunterhawley/node_modules/babylon/lib/index.js:1761:8)
    at Parser.pp$3.parseIdentifier (/home/hunterhawley/node_modules/babylon/lib/index.js:4332:10)
    at Parser.pp$3.parsePropertyName (/home/hunterhawley/node_modules/babylon/lib/index.js:4156:96)
    at Parser.pp$3.parseObj (/home/hunterhawley/node_modules/babylon/lib/index.js:4045:12)
    at Parser.pp$3.parseExprAtom (/home/hunterhawley/node_modules/babylon/lib/index.js:3719:19)
    at Parser.pp$3.parseExprSubscripts (/home/hunterhawley/node_modules/babylon/lib/index.js:3494:19)
    at Parser.pp$3.parseMaybeUnary (/home/hunterhawley/node_modules/babylon/lib/index.js:3474:19)
    at Parser.pp$3.parseExprOps (/home/hunterhawley/node_modules/babylon/lib/index.js:3404:19)
    at Parser.pp$3.parseMaybeConditional (/home/hunterhawley/node_modules/babylon/lib/index.js:3381:19)
[nodemon] app crashed - waiting for file changes before starting...

Так что мне кажется, что это проблема вавилонского сообщения.Я могу прикрепить свой index.js или любой другой файл, если это поможет вам понять это.Спасибо!

РЕДАКТИРОВАТЬ: Также я просто хотел добавить, что процесс установки (хотя он потребовал некоторой работы) прошел гладко, и у меня MongoDB работает в другом окне терминала, который для этого приложения необходим.Я также попытался запустить прямой и запустить узел index.js, но это также ни к чему меня не привело.

РЕДАКТИРОВАТЬ 2: Вот что я получил при установке плагина, приведенного в ответе 1

npm WARN babel-plugin-webpack-loaders@0.9.0 requires a peer of webpack@>=1.12.9 <3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN chunk-manifest-webpack-plugin@0.1.0 requires a peer of webpack@^1.4.0-beta6 but none is installed. You must install peer dependencies yourself.
npm WARN extract-text-webpack-plugin@1.0.1 requires a peer of webpack@^1.9.11 but none is installed. You must install peer dependencies yourself.
npm WARN webpack-dev-middleware@1.12.2 requires a peer of webpack@^1.0.0 || ^2.0.0 || ^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN webpack-dev-server@2.11.2 requires a peer of webpack@^2.2.0 || ^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN webpack-manifest-plugin@1.3.2 requires a peer of webpack@1 || 2 || 3 but none is installed. You must install peer dependencies yourself.
npm WARN @babel/plugin-proposal-object-rest-spread@7.3.4 requires a peer of @babel/core@^7.0.0-0 but none is installed. You must install peer dependencies yourself.
npm WARN @babel/plugin-syntax-object-rest-spread@7.2.0 requires a peer of @babel/core@^7.0.0-0 but none is installed. You must install peer dependencies yourself.
npm WARN mern-starter@2.0.0 No repository field.

+ @babel/plugin-proposal-object-rest-spread@7.3.4
added 3 packages from 1 contributor and audited 20460 packages in 22.759s

РЕДАКТИРОВАТЬ 3: Добавление моего файла webpack.config.babel.js

var cssnext = require('postcss-cssnext');
var postcssFocus = require('postcss-focus');
var postcssReporter = require('postcss-reporter');

var cssModulesIdentName = '[name]__[local]__[hash:base64:5]';
if (process.env.NODE_ENV === 'production') {
  cssModulesIdentName = '[hash:base64]';
}

module.exports = {
  output: {
    publicPath: '/',
    libraryTarget: 'commonjs2',
  },
  resolve: {
    extensions: ['', '.js', '.jsx'],
    modules: [
      'client',
      'node_modules',
    ],
  },
  module: {
    loaders: [
      {
        test: /\.css$/,
        exclude: /node_modules/,
        loader: 'style-loader!css-loader?localIdentName=' + cssModulesIdentName + '&modules&importLoaders=1&sourceMap!postcss-loader',
      },
      {
        test: /\.jpe?g$|\.gif$|\.png$|\.svg$/i,
        loader: 'url-loader?limit=10000',
      },
    ],
  },
  postcss: () => [
    postcssFocus(),
    cssnext({
      browsers: ['last 2 versions', 'IE > 10'],
    }),
    postcssReporter({
      clearMessages: true,
    }),
  ],
};

1 Ответ

0 голосов
/ 01 марта 2019

Самым простым решением является обновление до Node v8.3 или выше ...

"Начиная с Node v8.3, отдых / распространение объекта доступен без необходимости какой-либо транспортировки."

Если вы перемещаетесь, используя Babel , как вы упомянули, вам нужно добавить плагин в поддержку полифилла для Распространение объектов .В ваш .babelrc файл добавьте ...

"plugins": [
      "@babel/plugin-proposal-object-rest-spread"
]

И вам, очевидно, нужно будет установить этот плагин ...

npm i -D @babel/plugin-proposal-object-rest-spread
//OR
yarn add @babel/plugin-proposal-object-rest-spread --dev

ПРИМЕЧАНИЕ. Для этого потребуется "@babel/core": "^7.0.0"

Вот пример того, как настроить файл .babelrc для переноса узла ...

  {
    "presets": [
        ["@babel/env", {
          "targets": {
            "node": "current"
          }
        }]
    ],
    "plugins": [
      "@babel/plugin-proposal-object-rest-spread",
      "@babel/plugin-proposal-class-properties"
    ]
  }

Вы также можете добавить плагин прямо в настройках Webpack. (webpack.config.babel.js) ...

loaders: [
 {
  test: /\.js$/,
  exclude: /node_modules/,
  use: {
    loader: 'babel-loader',
    options: {
      presets: ['@babel/preset-env'],
      plugins: ['@babel/plugin-proposal-object-rest-spread']
    }
  }
 }
]

Пример конкретных пакетов (в package.json) Я сейчас использую вПроект Node / Babel, который может помочь в обновлении до Babel ^7.0.0 ...

"devDependencies": {
 "@babel/cli": "^7.2.3",
 "@babel/core": "^7.2.2",
 "@babel/plugin-proposal-object-rest-spread": "^7.3.1",
 "@babel/plugin-proposal-class-properties": "^7.3.4",
 "@babel/preset-env": "^7.3.1",
 "babel-core": "7.0.0-bridge.0",
 "babel-eslint": "^10.0.1",
 "babel-jest": "^24.0.0",
 "babel-loader": "^8.0.5",
 "babel-plugin-module-resolver": "^3.2.0"
}
...