La conexión de archivos a través de la importación no funciona

0

Pregunta

Para un día de ahora, no puedo entender por qué babel para el trago no me funciona, o yo incorrectamente conectar los módulos ...
El error en el navegador es como este:

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

Puedo conectar los módulos como este:

import focusVisible from "focus-visible";

Código main.min.js archivo:

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

Gulp tarea:

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())
}

El paquete.archivo json es como este:

{
  "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"
  }
}

El .babelrc archivo se parece a esto:

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

Parece que todo se ha aplicado lo que se necesita.
Si usted puede ayudar, voy a estar agradecido.
Todo el proyecto se quedó atascado a causa de este error ...
Es aconsejable para resolver el problema sin el uso de Webpack :)

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

Mejor respuesta

1

Parece que podría ser una pérdida de un paso de compilación donde transformar el código del navegador compatible. El require el método no está disponible en el navegador.

Usted tiene que usar una herramienta que transforma el código para que se puede ejecutar en el navegador. Una de estas herramientas es Browserify, otro es acumulativo, y puede haber más. Estas herramientas, por lo general, el paquete de la dependencia de fuentes en conjunción con el código de la aplicación, que permite que requieren declaraciones de transformarse en algún otro patrón que el navegador no comprende.

Usted puede pensar en él como este (ejemplo simplificado):

El código escrito por usted

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

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

La dependencia de origen en node_modules

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

expost.default = stringify

Paquete resultado

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

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

Gulp alberga un oficial de ejemplo de uso en su repositorio para 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/' }));
});

Trago de control de versiones: Browserify + Transforma

He intentado crear un ejemplo para usted, pero es difícil decir cuál es el más útil trago de secuencia de comandos para su proyecto. Voy a añadir un ejemplo, pero por favor, no la considero como una corrección que está listo para el uso general. Se intenta imitar el comportamiento de su actual trago script. Usted puede desear otro comportamiento en el largo plazo, por ejemplo, porque la paquetización de este script crea, no puede ser tan optimizado como otras configuraciones o herramientas permitiría.

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;

Gulp: Crear varios paquetes con Browserify

2021-11-20 08:39:50

Funcionó, gracias!
SineYlo

En otros idiomas

Esta página está en otros idiomas

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