'import' и 'export' могут появляться только с 'sourceType: module' - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий gulpfile.js:

var gulp = require('gulp'),
	babelify = require('babelify'),
	browserify = require('browserify'),
	envify = require('envify/custom'),
	eslint = require('gulp-eslint'),
	stylelint = require('gulp-stylelint'),
	vueify = require('vueify');

var vueCompile = function (app) {
	var b = browserify({
		entries: 'Views/Ui/src/' + app + '/main.js',
		debug: true,
		paths: ['./node_modules', './node_modules/globalize/dist'],
		transform: [babelify, vueify]
	});

	return b.transform(
		{ global: true }, // Required in order to process node_modules files
		envify({ NODE_ENV: process.env.NODE_ENV })
	)
		.bundle()
		// .pipe(source('ui.js'))
		// .pipe(buffer())
		// .pipe(process.env.NODE_ENV === 'production' ? uglify() : buffer())
		// .pipe(gulp.dest('Views/Ui/js/' + app))
};

gulp.task('vue', function () {
	return vueCompile('ui');
});

и следующие зависимости package.json:

"devDependencies": {
    "babel-core": "^6.26.3",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-polyfill": "^6.13.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-2": "^6.13.0",
    "babel-runtime": "^6.26.0",
    "babelify": "7.3.0",
    "browserify": "^16.2.2",
    "dateformat": "^1.0.12",
    "envify": "^4.1.0",
    "gulp": "^3.9.1",
    "gulp-babel": "^6.1.2",
    "gulp-clean": "^0.3.2",
    "gulp-clean-css": "^2.0.11",
    "gulp-debug": "3.2.0",
    "gulp-plumber": "^1.1.0",
    "gulp-rename": "^1.2.2",
    "gulp-replace": "^0.5.4",
    "gulp-uglify": "^3.0.0",
    "gulp-watch": "^4.3.9",
    "gulp-zip": "^3.2.0",
    "merge-stream": "^1.0.1",
    "node-sass": "^3.13.1",
    "run-sequence": "^2.1.0",
    "sassify": "^2.0.0",
    "vinyl-buffer": "^1.0.1",
    "vinyl-source-stream": "^1.1.0",
    "vue": "^2.5.16",
    "vue-resource": "1.5.1",
    "vueify": "^9.4.0",
    "vuex": "^2.0.0"
  },
  "dependencies": {
    "acorn": "^6.0.4",
    "cldr-core": "^33.0.0",
    "cldr-dates-full": "^33.0.0",
    "cldr-numbers-full": "^33.0.0",
    "devextreme": "18.2.3",
    "devextreme-vue": "18.2.3",
    "eslint": "^3.18.0",
    "eslint-plugin-vue": "beta",
    "globalize": "^1.3.0",
    "gulp-eslint": "^4.0.0",
    "gulp-phpcs": "^2.2.0",
    "gulp-stylelint": "^4.0.0",
    "quill": "^1.3.6",
    "stylelint": "^8.0.0",
    "stylelint-config-recommended": "^1.0.0",
    "stylelint-config-standard": "^17.0.0",
    "stylelint-processor-html": "^1.0.0",
    "v-hotkey": "^0.2.3",
    "vinyl-source-stream": "^1.1.0"
  }

Поскольку я пытаюсь свести к минимуму мой пример, возможно, есть несколько зависимостей, которые не нужны для примера.

Мой main.js начинается со следующей строки кода:

import App from './components/App.vue'

Если я собираюсь запустить задачу gulp vue, она заканчивается следующим выводом:

[10:57:57] Using gulpfile ...\gulpfile.js
[10:57:57] Starting 'vue'...
[10:57:57] 'vue' errored after 68 ms
[10:57:57] Error:
...\Ui\src\akte\main.js:1
import App from './components/App.vue';
^
ParseError: 'import' and 'export' may appear only with 'sourceType: module'

Как я могу сказать, babelifyпохоже, не работает успешно, потому что исключение будет сгенерировано при вызове метода .bundle().

Я что-то упустил из базового?

1 Ответ

0 голосов
/ 11 января 2019

Я нашел ответ сам.Так что на случай, если у кого-то возникнет такая же проблема, вот мое решение:

Файл .babelrc отсутствовал, поэтому что-то пошло не так при преобразовании кода.Мой файл имеет следующее содержимое:

{
  "presets": [
    "env",
    "stage-2"
  ],
  "plugins": [
    "transform-runtime"
  ]
}

После добавления файла в тот же каталог, что и gulpfile.js, все работает как положено.

...