Другая ошибка ParseError: import и export может отображаться только с sourceType: module :( - PullRequest
0 голосов
/ 29 октября 2018

Я потратил несколько дней, обыскивая Интернет и ТАК для решения этой проблемы (пожалуйста, не отмечайте это как дубликат!). Я пытаюсь использовать импорт ES6:

import * as _ from 'underscore'         <--- works
const test = _.clone({'2':1});          <--- works

import Bulma from '@vizuaalog/bulmajs'; <--- fails

Моя задача gulp не компилируется в строке 'import from bulmajs'; Я получаю страшные «ParseError:« import »и« export »могут появляться только с« sourceType: module »»: (

Вот задание глотка:

browserify(./src/js/index.js', {debug: true})
        .transform(babelify.configure())
        .bundle().on('error', function (err) {
        console.log(err);                   <--- error thrown here 
    })
    .pipe(source('index.js')) // Readable Stream -> Stream Of Vinyl Files
    .pipe(buffer()) // Vinyl Files -> Buffered Vinyl Files
    .pipe(sourcemaps.init().on('error', function (e) {
        console.log(e);
    }))
    .pipe(uglify().on('error', function (e) {
        console.log('here')
        console.log(e);
    }))
    .pipe(rename({extname: '.min.js'}))
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest(./prod/js'));

Мне не терпится использовать babel v7, но я не вижу, что не так с моим task / package.json (особенно с учетом того, что импорт подчеркивания работает).

Вот мой package.json:

"dependencies": {
   "@vizuaalog/bulmajs": "^0.7.0",
   "bulma": "^0.7.2",
   "underscore": "^1.9.1"
 }
 "devDependencies": {
   "@babel/core": "^7.1.2",
   "@babel/plugin-proposal-object-rest-spread": "^7.0.0",
   "@babel/preset-env": "^7.1.0",
   "autoprefixer": "^9.2.1",
   "babel-eslint": "^10.0.1",
   "babelify": "^10.0.0",
   "browserify": "^16.2.3",
   "browserify-css": "^0.14.0",
   "browserify-shim": "^3.8.14",
   "eslint": "^5.7.0",
   "fancy-log": "^1.3.2",
   "gulp": "^3.9.1",
   "gulp-autoprefixer": "^6.0.0",
   "gulp-clean-css": "^3.10.0",
   "gulp-csso": "^3.0.1",
   "gulp-imagemin": "^4.1.0",
   "gulp-newer": "^1.4.0",
   "gulp-rename": "^1.4.0",
   "gulp-sass": "^4.0.1",
   "gulp-sourcemaps": "^2.6.4",
   "gulp-uglify": "^3.0.1",
   "gulplog": "^1.0.0",
   "node-sass": "^4.9.3",
   "path": "^0.12.7",
   "run-sequence": "^2.2.1",
   "vinyl-buffer": "^1.0.1",
   "vinyl-source-stream": "^2.0.0"
 },
 "browserify": {
 "debug": true,
 "transform": [
   [
     "browserify-css",
     {
       "autoInject": true,
       "minify": true
     }
   ],
   [
     "babelify",
     {
       "presets": [
         [
           "@babel/preset-env",
           {
             "modules": "commonjs",
             "targets": {
               "browsers": [
                 "last 5 versions",
                 "safari >= 7"
               ]
             }
           }
         ]
       ],
       "plugins": [
         "@babel/plugin-proposal-object-rest-spread"
       ],
       "sourceMaps": true
     }
   ]
 ]

}

Любая помощь будет принята с благодарностью, я чувствую, что прочитал все соответствующие темы / сообщения SO вокруг этого и до сих пор не нашел решения.

1 Ответ

0 голосов
/ 07 ноября 2018

Babelify по умолчанию не обрабатывает никакие node_modules , потому что обычно там десятки тысяч файлов для обработки. Поскольку источник bulmajs написан на es6-зависимом javascript (не в случае с подчеркиванием!), Он также должен быть помечен буквами. Ваша задача глотка должна включать что-то вроде этого:

browserify('./src/js/index.js', {debug: true})
    .transform(babelify, {
        global: true,                                     // babelify EVERYTHING!!
        ignore: [/\/node_modules\/(?!@vizuaalog\/)/],     // just kidding, only babelify the one module we need
        presets: ["@babel/preset-env"]
    })
    .bundle().on('error', function (err) {
    console.log(err);
})

Вот репозиторий, который я создал при отладке этой проблемы, на случай, если он кому-нибудь интересен (не ожидайте ничего захватывающего) https://github.com/Hypaethral/bulmajs-browserify-mvp-example

...