Pripojenie súborov cez import nefunguje

0

Otázka

Za deň, teraz, nemôžem pochopiť, prečo babel pre dúškom nie je práca pre mňa, alebo mám nesprávne pripojenie modulov ...
Chyba v prehliadači je, ako je táto:

Uncaught ReferenceError: require is not defined
  at main.min.js:1

Som sa pripojiť moduly, ako je tento:

import focusVisible from "focus-visible";

Kód main.min.js súbor:

"use strict";var e;(e=require("focus-visible"))&&e.__esModule;

Dúškom úloha:

const { src, dest, series, watch, parallel } = require('gulp'),
      fileinclude = require('gulp-file-include'),
      rename = require("gulp-rename"),
      uglify = require('gulp-uglify-es').default,
      babel = require("gulp-babel"),
      notify = require("gulp-notify"),
      browserSync = require("browser-sync").create()

const changingScripts = () => {
  return src(['src/js/main.js', 'src/js/pages/**/*.js'])
    .pipe(babel())
    .pipe(fileinclude())
    .pipe(dest('dist/js'))
    .pipe(uglify({
      toplevel: true
    }).on('error', notify.onError()))
    .pipe(rename({
      extname: '.min.js'
    }))
    .pipe(dest('dist/js'))
    .pipe(browserSync.stream())
}

Balík.json súboru, ako je tento:

{
  "name": "project_name",
  "version": "1.0.0",
  "description": "some description of the project",
  "scripts": {},
  "keywords": ["keyword_1", "keyword_2", "keyword_3"],
  "author": "project_author",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.16.0",
    "@babel/eslint-parser": "^7.16.3",
    "@babel/preset-env": "^7.16.4",
    "@babel/register": "^7.16.0",
    "browser-sync": "^2.27.7",
    "eslint": "^8.2.0",
    "eslint-config-airbnb-base": "^15.0.0",
    "eslint-plugin-import": "^2.25.3",
    "gulp": "^4.0.2",
    "gulp-babel": "^8.0.0",
    "gulp-file-include": "^2.3.0",
    "gulp-notify": "^4.0.0",
    "gulp-rename": "^2.0.0",
    "gulp-uglify-es": "^3.0.0"
  }
}

Sa .babelrc súboru vyzerá nasledovne:

{
  "presets": ["@babel/preset-env"]
}

Vyzerá to, že všetko má aplikovať to, čo je potrebné.
Ak môžete pomôcť, budem vďačný.
Celý projekt uviazol, pretože táto chyba ...
Je vhodné riešiť problém bez použitia Webpack :)

gulp gulp-babel javascript node.js
2021-11-20 06:47:49
1

Najlepšiu odpoveď

1

Zdá sa, ako by ste mohli byť chýbajúce stavať krok, kde môžete premeniť váš kód bude prehliadač kompatibilný. Na require metóda nie je k dispozícii v prehliadači.

Budete musieť použiť nástroj, ktorý transformuje váš kód tak, že to môže byť bežal v prehliadači. Jeden takýto nástroj je Browserify, iný je rollup, a tam môže byť viac. Tieto nástroje, všeobecne povedané, zväzok závislosť zdrojov v spojení s kódu aplikácie, ktorá umožňuje vyžadovať závierka byť premenená na niektoré iné vzor prehliadač má pochopiť.

Môžete myslieť na to, ako je tento (príklad je zjednodušený):

Kód napísal vás

// main.js
const stringify = require('stringify')

alert(stringify({ error: "No authorization" })

Závislosť zdroj v node_modules

// node_modules/stringify/index.js
function stringify(obj) {
  return JSON.stringify(obj);
}

expost.default = stringify

Zväzok výsledok

// dist/main.js
function stringify(obj) {
  return JSON.stringify(obj);
}

alert(stringify({ error: "No authorization" })

Dúškom hostitelia úradník príklad použitia v ich úložiska pre browserify:

'use strict';

var browserify = require('browserify');
var gulp = require('gulp');
var source = require('vinyl-source-stream');
var buffer = require('vinyl-buffer');
var log = require('gulplog');
var uglify = require('gulp-uglify');
var reactify = require('reactify');

gulp.task('javascript', function () {
  // set up the browserify instance on a task basis
  var b = browserify({
    entries: './entry.js',
    debug: true,
    // defining transforms here will avoid crashing your stream
    transform: [reactify]
  });

  return b.bundle()
    .pipe(source('app.js', { sourcemaps: true }))
    .pipe(buffer())
        // Add transformation tasks to the pipeline here.
        .pipe(uglify())
        .on('error', log.error)
    .pipe(gulp.dest('./dist/js/', { sourcemaps: '../sourcemaps/' }));
});

Dúškom Verzií: Browserify + Transformuje

Som sa pokúšal vytvoriť príklad pre vás, ale je to ťažké povedať, čo najviac použiteľné dúškom skript by byť pre váš projekt. Som si pridajte príklad, ale prosím, nepovažujem to za opravu, ktorý je pripravený pre všeobecné použitie. Pokúša sa napodobňovať správanie vašej aktuálnej dúškom skript má. Možno budete chcieť iné správanie sa v dlhodobom horizonte, napríklad preto, viazanie tento skript vytvorí nemusí byť optimalizované tak, ako ostatné konfigurácie alebo nástroje, ktoré by umožnili.

const { dest } = require("gulp"),
  browserify = require("browserify"),
  babelify = require("babelify"),
  glob = require("glob"),
  source = require("vinyl-source-stream"),
  fileinclude = require("gulp-file-include"),
  rename = require("gulp-rename"),
  uglify = require("gulp-uglify-es").default,
  notify = require("gulp-notify"),
  browserSync = require("browser-sync").create(),
  es = require("event-stream");

const changingScripts = (done) => {
  // Define files you want to have as inputs
  var files = ["src/js/main.js", ...glob.sync("src/js/pages/**/*.js")];
  // Bundle each file separately so that file structure is preserved in
  // dist
  var tasks = files.map((file) => {
    return (
      browserify({
        entries: [file],
        debug: true,
        transform: [
          // Apply babel transforms here so that browserify knows how to bundle
          // the files
          babelify.configure({
            presets: ["@babel/preset-env"],
          }),
        ],
      })
        .bundle()
        // Transform the stream content bable bundling returns into a gulp
        // friendly format
        .pipe(source(file))
        // Not sure how fileinclude is used in your project. May be that it
        // doesn't work when it's configured in this way.
        .pipe(fileinclude())
        .pipe(dest("dist/js"))
        .pipe(
          uglify({
            toplevel: true,
          }).on("error", notify.onError())
        )
        .pipe(
          rename({
            extname: ".min.js",
          })
        )
        .pipe(dest("dist/js"))
        .pipe(browserSync.stream())
    );
  });

  return es.merge(tasks).on("end", done);
};

exports.default = changingScripts;

Dúškom: Vytvorenie viacerých zväzkov s Browserify

2021-11-20 08:39:50

Fungovalo to, vďaka!
SineYlo

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................