Неожиданная ошибка токена при импорте реагировать при создании приложения реагирования на производстве через Jenkins
Мы работаем над реактивным приложением. Мы используем Jenkins для создания нашего приложения для реагирования на тестовый сервер Linux. Однако сборка работала до прошлой недели, с прошлой недели она начала выдавать странные ошибки, которые были неожиданными. Вдобавок, к моему удивлению, сборка Jenkins иногда работает, а в другое время не работает, что является очень странным поведением. Подробная информация об ошибке и мои конфигурации сборки следующие.
Ниже приведены ошибки, которые мы получаем.
Ошибка реактивного импорта
Module Error (from ./node_modules/eslint-loader/index.js):
/src/Customer/All.js
1:8 error Parsing error: Unexpected token, expected "{"
> 1 | import React from 'react';
| ^
2 |
3 | import Row from 'react-bootstrap/Row';
4 | import Col from 'react-bootstrap/Col';
Неожиданное это ключевое слово
Module Error (from ./node_modules/eslint-loader/index.js):
/src/Users/Create.js
44:7 error Parsing error: Unexpected keyword 'this'
42 |
43 | if (prevUser.length === 0 && user.EmailAddress) {
> 44 | this.setState({
| ^
45 | userId: user._id,
46 | username: user.EmailAddress,
✖ 1 problem (1 error, 0 warnings)
Неожиданный маркер
ERROR in ./src/Referral/Filter/index.js
Module Error (from ./node_modules/eslint-loader/index.js):
/src/Filter/index.js
78:46 error Parsing error: Unexpected token
76 | Filters:
77 |
> 78 | <strong>{numberOfFilters}</strong>
| ^
79 | </Col>
80 | <Col
81 | sm={2}
✖ 1 problem (1 error, 0 warnings)
В задании Jenkins выполняются следующие команды для сборки.
- npm install
- npm запустить тест
- npm запустить производство
Тесты установки npm и запуска npm работают нормально. Это третья команда "npm run production", вызывающая вышеуказанные ошибки.
package.json - зависимости и devDependencies
"devDependencies": {
"@babel/core": "^7.4.0",
"@babel/preset-env": "^7.4.2",
"@babel/preset-react": "^7.0.0",
"babel-eslint": "^10.0.1",
"babel-loader": "^8.0.5",
"css-loader": "^2.1.1",
"enzyme": "^3.9.0",
"enzyme-adapter-react-16": "^1.12.1",
"eslint": "^5.15.3",
"eslint-config-airbnb": "^17.1.0",
"eslint-loader": "^2.1.2",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-jsx-a11y": "^6.2.1",
"eslint-plugin-react": "^7.12.4",
"jest": "^24.8.0",
"node-sass": "^4.11.0",
"react-hot-loader": "^4.8.0",
"react-test-renderer": "^16.8.6",
"sass-loader": "^7.1.0",
"style-loader": "^0.23.1",
"webpack-cli": "^3.3.0",
"webpack-dev-server": "^3.2.1"
},
"dependencies": {
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
"core-js": "^3.1.4",
"date-input-polyfill": "^2.14.0",
"email-validator": "^2.0.4",
"form-data": "^2.5.1",
"html2canvas": "^1.0.0-rc.5",
"jquery": "^3.5.1",
"js-file-download": "^0.4.7",
"jspdf": "^1.5.3",
"moment": "^2.24.0",
"popups": "^1.1.3",
"query-string": "^5.0.0",
"raf": "^3.4.1",
"react": "^16.8.5",
"react-bootstrap": "^1.0.0-beta.6",
"react-bootstrap-typeahead": "^4.0.0-alpha.6",
"react-collapsible": "^2.8.0",
"react-datepicker": "^2.7.0",
"react-dom": "^16.8.5",
"react-icons": "^3.10.0",
"react-input-mask": "^2.0.4",
"react-maskinput": "^2.0.1",
"react-router-dom": "^5.0.0",
"webpack": "^4.29.6"
}
.eslintrc файл
{
"parser": "babel-eslint",
"plugins": [
"react"
],
"rules": {
"react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],
"react/jsx-no-bind": [0, {}],
"no-underscore-dangle": [0, {}],
"react/prop-types": [0, {}],
"react/no-did-update-set-state": [1],
"max-len": [1],
"no-nested-ternary": [0],
"no-unneeded-ternary": [1],
"no-useless-escape": [1],
"react/destructuring-assignment": [1],
"linebreak-style": [1]
},
"extends": ["airbnb"],
"globals": {
"localStorage": true,
"btoa": true,
"window": true,
"describe": true,
"expect": true,
"FileReader": true,
"path": true,
"document": true
}
}
.babelrc файл
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
]
}
webpack.prod.config.js (режим = Производство)
const webpack = require('webpack');
const path = require('path');
module.exports = {
devtool: 'source-map',
mode: 'production',
entry: ['babel-polyfill', './src/index.js'],
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader'],
},
{
test: /\.(css|scss)$/,
use: [
'style-loader', // creates style nodes from JS strings
'css-loader', // translates CSS into CommonJS
'sass-loader', // compiles Sass to CSS, using Node Sass by default
],
},
{
test: /\.js$/,
include: [
path.resolve(__dirname, 'src'),
],
exclude: /node_modules/,
use: ['babel-loader', 'eslint-loader'],
},
],
},
resolve: {
extensions: ['*', '.js', '.jsx'],
},
output: {
path: path.resolve(__dirname, 'dist'),
publicPath: '/',
filename: 'bundle.js',
},
plugins: [
new webpack.DefinePlugin({ 'process.env.API_URL': JSON.stringify('/api') }),
],
};
Произойдет ли это с обновлением пакета для babel или любого другого пакета? Хотя не уверен!
Любая помощь приветствуется.
Спасибо.