NPM + Ошибка Browserify: ParseError: 'import' и 'export' могут появляться только с 'sourceType: module' - PullRequest
0 голосов
/ 14 июля 2020

У меня два простых файла js. Одним из них должен быть модуль, который экспортирует свое содержимое, которое будет включено командой import.

First testModule. js:

export function test() {
    console.log('teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeest');
}

и main. js:

import * as test from "../src/js/testModule.js"

test.test();

В пакете. json У меня есть две скриптовые команды. Во-первых, чтобы перевести es6 в es5, а во-вторых, чтобы просмотреть результат es5 из-за модулей. Первый работает. Но вторая выдает мне ошибку.

{
    "name": "examples-vue",
    "main": "index.js",
    "dependencies": {
        "bootstrap": "^3.4.1",
        "jquery": "^3.4.1",
        "vue": "^2.6.11"
    },
    "devDependencies": {
        "@babel/cli": "^7.10.4",
        "@babel/core": "^7.10.4",
        "@babel/polyfill": "^7.10.4",
        "@babel/preset-env": "^7.10.4",
        "browserify": "^16.5.1",
        "core-js": "^3.6.5"
    },
    "scripts": {
        "es5": "babel ./src/js/main.js -o ./js/main.es5.js",
        "browserify": "browserify ./js/main.es5.js -o ./js/bundle.js",
        "build": "npm run es5 && npm run browserify"
    }
}

Результат первой команды такой:

"use strict";

function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }

var test = _interopRequireWildcard(require("../src/js/testModule.js"));

function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }

function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

test.test();

А вторая команда выдает ошибку: ParseError: 'import 'и' экспорт 'могут появляться только с' sourceType: module '

На другие вопросы все еще тот же ответ. Browserify не работает с синтаксисом es6. Но он работает с файлом es5. Что не так с этим кодом? Большое спасибо за любую помощь.

1 Ответ

0 голосов
/ 14 июля 2020

Таким образом, допустимый синтаксис для Browserify:

для импорта

import * as testModule from "./testModule.js";
import { test2module } from "./testModule2.js";

для экспорта

module.exports.test = test;
module.exports.xxx = xxx;

или для экспорта

export var test2module = {
    test2: test2,
    aaa: aaa
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...