如何解决SyntaxError:使用管道 yml
我正在尝试使用 .yml 脚本通过 bitbucket-pipeline 将我的项目部署到服务器。该项目有一个带有 PHP 7.4 的 laravel 后端和一个 Vue Js 前端。使用 Yarn Run 构建前端时会出现问题。构建过程正在我的同事和我的本地机器上使用完全相同的 yarn.lock 和 package.json,但不在管道中。本地我们也有相同的 node 和 yarn/npm 版本。
这是我们的管道脚本:
image:
name: atlassian/default-image:2
definitions:
steps:
- step: &laravel-deploy
name: Laravel Deployment
caches:
- composer
image: php:7.4.12-fpm
script:
- mkdir -p "$REMOTE_PATH/$BITBUCKET_BUILD_NUMBER"
- export ROOT_DIR=$(pwd)
- mv * $REMOTE_PATH/$BITBUCKET_BUILD_NUMBER
- cd $REMOTE_PATH/$BITBUCKET_BUILD_NUMBER
- echo "install dependencies"
- echo "install Stuff"
- apt-get update && apt-get install -y unzip && apt-get install -y git && apt install -y openssh-client
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --version=1.10.13
- if [ -z "$YARN_RUN" ]; then
- else
- apt-get update && apt-get install -y npm
- npm config set "@fortawesome:registry" https://npm.fontawesome.com/ && npm config set "//npm.fontawesome.com/:_authToken" $FA_TOKEN
- npm install --global yarn
- yarn install
- yarn run $YARN_RUN
- fi
- echo "build application"
- mkdir -p ~/.ssh
- echo $SSH_KEY > ~/.ssh/id_rsa.tmp # note: assumes base64 encoded ssh key without a passphrase
- base64 -d ~/.ssh/id_rsa.tmp > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- base64 ~/.ssh/id_rsa
- eval `ssh-agent -s`
- ssh-add ~/.ssh/id_rsa
- composer install $COMPOSER_OPTIONS
- php artisan config:cache
- if [ $OP_CAHCE -eq 1 ]; then
- php artisan opcache:clear && php artisan opcache:compile --force
- fi
- mv -t $ROOT_DIR app artisan bootstrap config public resources routes storage vendor database
- cd $ROOT_DIR
- pipe: atlassian/ssh-run:0.2.3
variables:
SSH_USER: $SSH_USER
SERVER: $SSH_HOST
COMMAND: "rm -rf $REMOTE_PATH/$BITBUCKET_BUILD_NUMBER"
- echo "deploy to server"
- pipe: atlassian/rsync-deploy:0.4.0
variables:
USER: $SSH_USER
SERVER: $SSH_HOST
REMOTE_PATH: "$REMOTE_PATH/$BITBUCKET_BUILD_NUMBER"
LOCAL_PATH: "."
EXTRA_ARGS: --exclude='.*'
- echo "linking resources"
- pipe: atlassian/ssh-run:0.2.3
variables:
SSH_USER: $SSH_USER
SERVER: $SSH_HOST
COMMAND: "cd ${REMOTE_PATH} && rm -rf current && ls -tp | tail -n +6 | xargs rm -rf && ln -s \\$(ls -tr | tail -n1 | xargs -0 realpath) current"
pipelines:
default:
- step:
name: Analyze code
script:
- pipe: sonarsource/sonarcloud-scan:1.1.0
custom:
deploy-to-testing:
- step:
<<: *laravel-deploy
deployment: testing
branches:
staging:
- step:
<<: *laravel-deploy
deployment: staging
master:
- step:
<<: *laravel-deploy
deployment: production
在步骤中发生以下错误:- yarn run $YARN_RUN。 这是错误消息的一部分,它总是 SyntaxError: Unexpected token :
+ yarn run $YARN_RUN
yarn run v1.22.10
$ cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js -no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
ERROR Failed to compile with 58 errors8:13:28 AM
error in ./resources/assets/js/services/api/user.api.js
Syntax Error: Unexpected token (8:13)
6 | export default class UserApi {
7 |
> 8 | static url = "/users";
| ^
9 |
10 | /**
11 | * Get the user with ID.
@ ./resources/assets/js/app.js 16:0-46
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/services/api/policy.api.js
Syntax Error: Unexpected token (9:13)
7 | */
8 | export default class PolicyApi {
> 9 | static url = "/policies";
| ^
10 |
11 | /**
12 | * Get the policy by given ID.
@ ./node_modules/babel-loader/lib?{"cacheDirectory":true,"presets":[["env",{"modules":false,"targets":{"browsers":["> 2%"],"uglify":true}}]],"plugins":["transform-object-rest-spread",["transform-runtime",{"polyfill":false,"helpers":false}]]}!./resources/assets/js/pages/Lead/LeadsProvision/components/CommissionPaymentDateComponent/index.js 4:0-63
@ ./resources/assets/js/pages/Lead/LeadsProvision/components/CommissionPaymentDateComponent/CommissionPaymentDateComponent.vue
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/services/api/customer.api.js
Syntax Error: Unexpected token (9:15)
7 | */
8 | export default class CustomerApi {
> 9 | static url = "/customers";
| ^
10 |
11 | /**
12 | * Get the customer by given ID.
@ ./node_modules/babel-loader/lib?{"cacheDirectory":true,"helpers":false}]]}!./resources/assets/js/pages/Lead/LeadOverview/components/LeadActionComponent/index.js 3:0-67
@ ./resources/assets/js/pages/Lead/LeadOverview/components/LeadActionComponent/LeadActionComponent.vue
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/services/api/lead.api.js
Syntax Error: Unexpected token (9:15)
7 | */
8 | export default class LeadApi {
> 9 | static url = "/leads";
| ^
10 |
11 | /**
12 | * Store a new customer for the lead.
@ ./node_modules/babel-loader/lib?{"cacheDirectory":true,"helpers":false}]]}!./resources/assets/js/pages/Lead/LeadsProvision/components/PoliceLeadPaymentDateComponent/index.js 5:0-59
@ ./resources/assets/js/pages/Lead/LeadsProvision/components/PoliceLeadPaymentDateComponent/PoliceLeadPaymentDateComponent.vue
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/components/SidebarComponent/index.js
Syntax Error: Unexpected token,expected,(10:27)
8 | computed: {
9 | ...mapState({
> 10 | sidebarActive: (state: any) => state.sidebar.sidebarActive,| ^
11 | }),12 | },13 | methods: {
@ ./resources/assets/js/components/SidebarComponent/SidebarComponent.vue 8:21-291
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/validators/currency-validator.js
Syntax Error: Unexpected token,(11:32)
9 | * @returns {boolean}
10 | */
> 11 | const currencyValidator = (value: string) => {
| ^
12 |
13 | if (value || value === 0) {
14 | return (/^([0-9])+(,[0-9]{1,2})?$/).test(value);
@ ./resources/assets/js/validators/index.js 11:0-53
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/validators/negative-currency-validator.js
Syntax Error: Unexpected token,(11:40)
9 | * @returns {boolean}
10 | */
> 11 | const negativeCurrencyValidator = (value: string) => {
| ^
12 |
13 | if (value || value === 0) {
14 | return (/^-?([.0-9])+(,2})?$/).test(value);
@ ./resources/assets/js/validators/index.js 12:0-70
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/filters/pretty-bytes-filter.js
Syntax Error: Unexpected token,(11:45)
9 | * @returns {string}
10 | */
> 11 | export default function prettyBytesFilter(num: number) {
| ^
12 | if (typeof num !== 'number' || Number.isNaN(num)) {
13 | throw new TypeError(`Expected a number got ${typeof(num)}`);
14 | }
@ ./resources/assets/js/filters/index.js 5:0-54
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/store/modules/customer-histories.js
Syntax Error: Unexpected token,(12:30)
10 | },11 | mutations: {
> 12 | setCustomerHistory: (state: any,customerHistory: any) => {
| ^
13 | state.customerHistory = customerHistory;
14 | },15 | setCustomerHistories: (state: any,customerHistories: any) => {
@ ./resources/assets/js/store/index.js 9:0-61
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/validators/insurer-validator.js
Syntax Error: Unexpected token,(12:31)
10 | * @returns {boolean}
11 | */
> 12 | const insurerValidator = (value: any) => {
| ^
13 |
14 | if (value) {
15 | return value.id !== null && value.id !== '';
@ ./resources/assets/js/validators/index.js 13:0-51
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/validators/insurance-type-validator.js
Syntax Error: Unexpected token,(12:35)
10 | * @returns {boolean}
11 | */
> 12 | const insurerTypeValidator = (value: any) => {
| ^
13 |
14 | if (value) {
15 | return value.id !== null && value.id !== '';
@ ./resources/assets/js/validators/index.js 14:0-62
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/filters/concat-filter.js
Syntax Error: Unexpected token,(12:42)
10 | * @returns {string}
11 | */
> 12 | export default function concatFilter(value: string,...args: Array<string>) {
| ^
13 | if (args.length === 0) {
14 | return value;
15 | }
@ ./resources/assets/js/filters/index.js 7:0-43
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/filters/concat-list-filter.js
Syntax Error: Unexpected token,(12:54)
10 | * @returns {string}
11 | */
> 12 | export default function concatListFilter(listOfStrings: string[],delimiter = ',') {
| ^
13 | if (!Array.isArray(listOfStrings) || listOfStrings.length === 0) {
14 | return '';
15 | }
@ ./resources/assets/js/filters/index.js 8:0-52
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/store/modules/user.js
Syntax Error: Unexpected token,(13:20)
11 | },12 | mutations: {
> 13 | SET_USER: (state: any,newUser: any) => {
| ^
14 | state.user = newUser;
15 | },16 | },@ ./resources/assets/js/store/index.js 6:0-34
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/store/modules/policies.js
Syntax Error: Unexpected token,(13:21)
11 | },12 | mutations: {
> 13 | setPolicy: (state: any,policy: Policy) => {
| ^
14 | state.policy = policy;
15 | },16 | setEditMode: (state: any,editMode: boolean) => {
@ ./resources/assets/js/store/index.js 8:0-42
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/store/modules/customers.js
Syntax Error: Unexpected token,(13:24)
11 | getters: {},12 | mutations: {
> 13 | setCustomers: (state: any,payload: any) => {
| ^
14 | state.customers = payload.data.data;
15 | },16 | setCustomer: (state: any,payload: any) => {
@ ./resources/assets/js/store/index.js 7:0-44
@ ./resources/assets/js/app.js
@ multi ./resources/assets/js/app.js ./resources/assets/sass/app.scss
error in ./resources/assets/js/validators/zip-validator.js
Syntax Error: Unexpected token,(13:27)
11 | * @returns {boolean}
12 | */
> 13 | const zipValidator = (value: string) => {
| ^
14 | const pattern = XRegExp('^[0-9]{5}$');
15 | return pattern.test(value);
16 | };
这是我们的 package.json:
{
"private": true,"version": "0.0.1","name": "acm","scripts": {
"dev": "npm run development","development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js","watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js","watch-poll": "npm run watch -- --watch-poll","cypress:open": "cypress open","cypress:run": "cypress run","hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js","prod": "npm run production","production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js","docs:generate": "node_modules/.bin/jsdoc resources/assets/js/ -c jsdoc.conf.json -t node_modules/docdash -r -d docs","unit": "cross-env NODE_ENV=testing karma start --code-coverage"
},"dependencies": {
"@fortawesome/fontawesome-free": "^5.4.0","@fortawesome/fontawesome-pro": "^5.4.0","@fortawesome/fontawesome-svg-core": "^1.2.6","@fortawesome/free-brands-svg-icons": "^5.4.0","@fortawesome/pro-light-svg-icons": "^5.4.0","@fortawesome/pro-regular-svg-icons": "^5.4.0","@fortawesome/pro-solid-svg-icons": "^5.4.0","@fortawesome/vue-fontawesome": "0.1.1","axios": "^0.18","bootstrap": "^4.0.0","bootstrap-vue": "^2.0.0-rc.9","lodash": "^4.17.4","moment": "^2.22.2","node-sass": "^4.11.0","password-generator": "^2.2.0","raven-js": "^3.26.4","sass-loader": "^7.1.0","vee-validate": "2.0.9","vue": "^2.5.13","vue-clickaway": "^2.2.2","vue-context": "^3.2.0","vue-moment": "^3.1.0","vue-multiselect": "2.0.3","vue-perfect-scrollbar": "^0.1.0","vue-router": "^3.0.1","vue-simple-spinner": "^1.2.8","vue2-datepicker": "^2.0.4","vue2-filters": "^0.3.0","vuetable-2": "^1.7.2","vuex": "^3.0.1","xregexp": "^4.2.0"
},"devDependencies": {
"@vue/test-utils": "^1.0.0-beta.25","axios-mock-adapter": "^1.15.0","babel-eslint": "^8.2.3","babel-plugin-syntax-flow": "^6.18.0","babel-plugin-transform-class-properties": "^6.24.1","babel-plugin-transform-flow-strip-types": "^6.22.0","babel-plugin-transform-runtime": "^6.23.0","babel-preset-env": "^1.7.0","babel-preset-es2015": "^6.24.1","babel-preset-stage-2": "^6.24.1","cross-env": "^5.1","cypress": "3.1.0","docdash": "^0.4.0","eslint": "^4.19.1","eslint-config-airbnb-base": "^13.0.0","eslint-plugin-cypress": "^2.0.1","eslint-plugin-flowtype-errors": "^3.6.0","eslint-plugin-html": "^4.0.3","eslint-plugin-import": "^2.13.0","eslint-plugin-vue": "^4.5.0","flow-bin": "^0.73.0","jasmine-core": "^3.1.0","jsdoc": "3.5.5","jsdoc-babel": "^0.4.0","karma": "^2.0.2","karma-babel-preprocessor": "^7.0.0","karma-chrome-launcher": "^2.2.0","karma-coverage-istanbul-reporter": "^2.0.1","karma-firefox-launcher": "^1.1.0","karma-jasmine": "^1.1.2","karma-jasmine-html-reporter": "^1.1.0","karma-phantomjs-launcher": "^1.0.4","karma-spec-reporter": "^0.0.32","karma-webpack": "^3.0.0","laravel-mix": "^2.0","vue-template-compiler": "^2.5.13","webpack-livereload-plugin": "^1.0.0"
}
}
我们尝试了许多解决方案,例如更新 babel 包、编辑 babelrc 文件或尝试使用不同的包管理器安装包。但到目前为止没有任何效果。
解决方法
对于任何有同样问题的人,我们找到了答案。问题是以下命令:
- mv * $REMOTE_PATH/$BITBUCKET_BUILD_NUMBER
mv 移动所有不以 .
开头的文件。因为 babelrc 文件以 .
开头,所以它没有被移动。没有这个文件,插件无法加载,编译失败。我们将命令更改为:
mv * .babelrc $REMOTE_PATH/$BITBUCKET_BUILD_NUMBER
一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。