簡體   English   中英

NPM + Browserify 錯誤:ParseError: 'import' 和 'export' 可能只出現在 'sourceType: module' 中

[英]NPM + Browserify error: ParseError: 'import' and 'export' may appear only with 'sourceType: module'

我有兩個簡單的 js 文件。 其中之一應該是導出其內容的模塊,該模塊將包含在 import 命令中。

首先 testModule.js:

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

和 main.js:

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

test.test();

在 package.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' and 'export' may appear only with 'sourceType: module'

在其他問題中仍然是相同的答案。 Browserify 不適用於 es6 語法。 但它適用於 es5 文件。 這段代碼有什么問題? 非常感謝您的幫助。

所以 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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM