【问题标题】:Identifier 'browserSync' has already been declared标识符“browserSync”已被声明
【发布时间】:2019-09-12 19:43:32
【问题描述】:

我不断收到错误“标识符‘browserSync’已被声明”但我看不出问题出在哪里。这是我的代码

// Watch files
function watchFiles() {
    gulp.watch("*.js", gulp.series(scriptsLint, scripts, browserSyncReload));
    gulp.watch(["processHTML"], gulp.series(browserSyncReload));
  }

//Task Live Reload

function browserSync(done) {
    browserSync.init({
      server: './dist',
      port: 8080,
      ui: {
        port: 8081
      }
    })
    done()
  };

// BrowserSync Reload
function browserSyncReload(done) {
    browserSync.reload();
    done();
  }

// define complex tasks
const js = gulp.series(scriptsLint, scripts);
const build = gulp.parallel(processHTML,js);
const watch = gulp.parallel(watchFiles, browserSync);

【问题讨论】:

  • function browserSync(done) { 函数的名称与库 browserSync 相同,所以只需将其重命名为 browserSyncFunc(done)。
  • @DanielAranda 谢谢,我没看到
  • @MiamiLarry 是选择接受答案的一个理由,一个答案是在我说出与我相同的事情后 5 分钟给出的答案......在你选择我接受的答案后更有趣首先?真的很好奇
  • @dippas 我不明白你的说法,你的两个答案都是正确的,我赞成你们俩
  • @MiamiLarry 好吧,鉴于另一个用户的得分为负分 (+0/-1),您并没有对两者都投赞成票,而且我认为您将绿色勾号与赞成票混淆了(因为您将我的答案打勾为接受),向上/向下箭头用于赞成/反对,绿色勾号用于将答案标记为“最佳答案”/“最有帮助的答案”,并且鉴于您的声誉较低(低于 15 分),您不能还没有投票。

标签: javascript gulp gulp-browser-sync


【解决方案1】:

您需要将函数 browserSync 重命名为其他名称,因为这是为 BrowserSync 库保留的关键字。

类似这样的:

// Watch files
function watchFiles() {
    gulp.watch("*.js", gulp.series(scriptsLint, scripts, reload));
    gulp.watch(["processHTML"], gulp.series(reload));
  }

//Task Live Reload

function localServer(done) {
    browserSync.init({
      server: './dist',
      port: 8080,
      ui: {
        port: 8081
      }
    })
    done()
  };

// BrowserSync Reload
function reload(done) {
    browserSync.reload();
    done();
  }

// define complex tasks
const js = gulp.series(scriptsLint, scripts);
const build = gulp.parallel(processHTML,js);
const watch = gulp.parallel(watchFiles, localServer);

【讨论】:

    【解决方案2】:

    您在第 9 行中声明的 browserSync() 函数与其作用域中的另一个变量 browserSync(在第 10 行中)命名相同,并且需要重命名。

    // Watch files
    function watchFiles() {
        gulp.watch("*.js", gulp.series(scriptsLint, scripts, browserSyncReload));
        gulp.watch(["processHTML"], gulp.series(browserSyncReload));
      }
    
    //Task Live Reload
    
    function browserSyncFunc(done) {
        browserSync.init({
          server: './dist',
          port: 8080,
          ui: {
            port: 8081
          }
        })
        done()
      };
    
    // BrowserSync Reload
    function browserSyncReload(done) {
        browserSync.reload();
        done();
      }
    
    // define complex tasks
    const js = gulp.series(scriptsLint, scripts);
    const build = gulp.parallel(processHTML,js);
    const watch = gulp.parallel(watchFiles, browserSyncFunc /* I'm guessing you meant to use the browserSync function here, not the object */);

    【讨论】:

      猜你喜欢
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-28
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多