当前位置: 首页 > 知识库问答 >
问题:

gulp browserify 定义一个js为指定入口?压缩后js文件顺序不是按引入顺序?

井斌斌
2023-07-21

gulp browserify 定义一个js为指定入口?压缩后js文件顺序不是按引入顺序?
main.js是入口文件,里面引入了

import { A } from './A';import "./B";

现在B中使用了A定义的方法,但是一直提示这个方法XXXX is not defined?应该怎么修改?

A文件是

export function A() {    console.log("AAAAAAA");}

B 文件是

A();

gulp 压缩后的文件是

!function u(i,f,c){function s(e,r){if(!f[e]){if(!i[e]){var t="function"==typeof require&&require;if(!r&&t)return t(e,!0);if(A)return A(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var o=f[e]={exports:{}};i[e][0].call(o.exports,function(r){return s(i[e][1][r]||r)},o,o.exports,u,i,f,c)}return f[e].exports}for(var A="function"==typeof require&&require,r=0;r<c.length;r++)s(c[r]);return s}({1:[function(r,e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.A=function(){console.log("AAAAAAA")}},{}],2:[function(r,e,t){"use strict";A()},{}],3:[function(r,e,t){"use strict";r("./A");r("./B")},{"./A":1,"./B":2}]},{},[3]);

报错提示 A is not defined

这个是配置文件

const gulp = require('gulp');//引入gulp  const htmlMin = require('gulp-htmlmin');//引入html压缩模块  const autoprefixer = require('gulp-autoprefixer');const cleanCss = require('gulp-clean-css') //引入css压缩模块const browserify = require('browserify');const babelify = require('babelify');const source = require('vinyl-source-stream');const buffer = require('vinyl-buffer');const babel = require('gulp-babel'), //引入es6转es5模块    uglify = require('gulp-uglify') //引入js压缩模块const connect = require('gulp-connect');const webserver = require('gulp-webserver');const proxy = require('http-proxy-middleware');const sass = require('gulp-sass')(require('sass'));const path = {    html: {        src: 'src/**/*.html',        dest: 'dist'    },    css: {        src: 'src/**/*.css',        dest: 'dist'    },    js: {        entries: 'src/assets/js/main.js',        output: './assets/js/main.js',        src: 'src/**/*.js',        dest: 'dist'    },    scss: {        src: 'src/**/*.scss',        dest: 'dist'    }}/**  * 创建任务,并命名任务名 * 一个*表示所有文件,两个*表示所有目录 */const htmlCompress = () => {    return gulp.src(path.html.src)        .pipe(htmlMin({            removeComments: true,//清除HTML注释            collapseWhitespace: true,//压缩HTML            collapseBooleanAttributes: true,//压缩布尔属性的值            removeEmptyAttributes: true,//删除所有空格作属性值            removeScriptTypeAttributes: false,//删除<script>的type="text/javascript"            removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"              minifyJS: true,//压缩页面JS            minifyCSS: true //压缩页面css        })).pipe(gulp.dest(path.html.dest)) //指定压缩文件放置的目录 }const scssCompile = () => {    return gulp.src(path.scss.src)        .pipe(sass().on('error', sass.logError))        .pipe(gulp.dest(path.scss.dest));}const cssCompress = () => {    return gulp.src(path.css.src)        .pipe(autoprefixer({            cascade: false        }))        .pipe(cleanCss())        .pipe(gulp.dest(path.css.dest))}const jsCompress = () => {    // return gulp.src(path.js.src)    //     .pipe(babel({    //         presets: ['@babel/env'] //es6转es5    //     }))    //     .pipe(uglify()) //执行压缩    //     .pipe(gulp.dest(path.js.dest))    return browserify({        entries: path.js.entries, // 入口文件路径        debug: true    })        .transform(babelify, {            presets: ['@babel/preset-env']        })        .bundle()        .pipe(source(path.js.output))        .pipe(buffer())        .pipe(uglify())        .pipe(gulp.dest(path.js.dest));}const watch = () => {//监听文件,文件改变执行对应的任务    gulp.watch(path.html.src, htmlCompress)    gulp.watch(path.scss.src, scssCompile)    gulp.watch(path.html.src, cssCompress)    gulp.watch(path.js.src, jsCompress)}// const server = () => {//     // 创建服务器//     connect.server({//         root: 'dist',//根目录//         port: '2000',//端口号  //         livereload: true //服务器热更新//     })// }const createServer = () => {    return gulp.src('./dist')        .pipe(webserver({ //创建服务器            port: '3000', //端口号            host: '172.16.108.106',            open: '/dark-rankings.html', //默认打开路径            livereload: true, //热更新            middleware: [                proxy.createProxyMiddleware('/api', { //创建反向代理,请求已 /api 开头就使用target的服务器                    target: 'http://172.16.108.106',                    changeOrigin: true                })            ]        })).pipe(connect.reload())}/* 以对象形式导出 *//* 同时运行多个任务 */module.exports.default = gulp.series(gulp.parallel(htmlCompress, scssCompile, cssCompress, jsCompress, watch, createServer));

共有1个答案

巢星纬
2023-07-21

你的A模块里,你这样导出你的方法:

export function yourMethod() {  // your code here}

然后在你的B模块里导入这个方法:

// B.jsimport { yourMethod } from './A';
 类似资料:
  • 问题内容: 假设我有一个查询“ select * from子句,其中id在(0,2,5,1,3)中”,我实际上希望返回的行以它们在where子句中指定的相同顺序返回。ID的顺序将随查询的不同而改变,并且该顺序没有模式。 我知道可以更改数据模型,创建临时表等。但是请相信我,这些类型的解决方案在我的情况下将行不通。我也无法在应用程序代码中更改结果对象的顺序。 我还知道,不同的数据库引擎对事物的排序方式

  • 已知字母序列【d, g, e, c, f, b, o, a】,请实现一个函数针对输入的一组字符串 input[] = {“bed”, “dog”, “dear”, “eye”},按照字母顺序排序并打印,结果应为:dear, dog, eye, bed。 说明 本问题在网上比较常见,但这里尝试用另外一个思路,并且用python来写,与众多用c++的有所不同,且似乎短小了不少。自己感觉比网上参考到的更

  • 比如我在一个js文件中 怎么保证 按A-B—C 的顺序引入? 一定要按script标签那样动态引入吗?比如,import这种引入有什么好方法吗?

  • 问题内容: 我在Oracle中有两个表,作业和参考。 我想在两个表中插入一条新记录,并使用从序列中生成的键。就像是: 当然,这导致: 有没有不使用PL / SQL的方法?我非常喜欢仅使用SQL来做到这一点。 问题答案: 您可以为此使用多表插入语法的副作用: SQL小提琴。 从限制: 您不能在多表插入语句的任何部分中指定序列。多表插入被视为单个SQL语句。因此,对NEXTVAL的第一个引用将生成下一

  • 本文向大家介绍怎么引入(调用)一个JS文件,包括了怎么引入(调用)一个JS文件的使用技巧和注意事项,需要的朋友参考一下 我们旺旺需要调用别的 js文件。怎么处理? 看随机抽取这个例子。在一个页面中如下: 我们可以把 js 放在另外一个文件里,比如当前文件夹的 a.js 中。 这样 html 页面如下: a.js 这样就行了。 当然,也可以把 a.js放在web上,然后引用成下面这样。 以上所述是小

  • 问题内容: 如何以以下方式将值插入表(MySQL): 在表的所有行上,按ID列(PK)的顺序,在“ num”列中插入递增数字? 例如,如果表有3行,其ID为1,5,2,我希望ID 1获得num = 1,ID 2获得num = 2,ID 5获得num = 3。 编辑 我将解释为什么(我认为)需要这样做: 我试图将表中的列拆分为具有1对1关系的单独表。我以为我可以按ID的顺序获取所有值,然后将它们插入