Gulp 使用babel 7忽略函数外部的返回

gtlvzcf8  于 2022-12-08  发布在  Gulp
关注(0)|答案(2)|浏览(189)

我最近更新到了Babel 7和Webpack 4,在运行我们的Gulp构建任务时收到了这个错误:

gulp build
[00:26:04] Requiring external module @babel/register
[91m[BABEL] Note: The code generator has deoptimised the styling of /node_modules/lodash/lodash.js as it exceeds the max of 500KB.
[0m[91m/node_modules/@babel/core/lib/parser/index.js:95
    throw err;
    ^

SyntaxError: /node_modules/dev-ip/lib/dev-ip.js: 'return' outside of function (41:8)

  39 |     var out = getIp();
  40 |     if (!out.length) {
> 41 |         return console.log(messages.error);
     |         ^
  42 |     }
  43 |     console.log(getIp("cli"));
  44 | }
    at Parser.raise (/node_modules/@babel/parser/src/parser/location.js:41:63)
    at Parser.parseReturnStatement (/node_modules/@babel/parser/src/parser/statement.js:577:12)
    at Parser.parseStatementContent (/node_modules/@babel/parser/src/parser/statement.js:199:21)
    at Parser.parseStatement (/node_modules/@babel/parser/src/parser/statement.js:146:17)
    at Parser.parseBlockOrModuleBlockBody (/node_modules/@babel/parser/src/parser/statement.js:865:25)
    at Parser.parseBlockBody (/node_modules/@babel/parser/src/parser/statement.js:841:10)
    at Parser.parseBlock (/node_modules/@babel/parser/src/parser/statement.js:818:10)
    at Parser.parseStatementContent (/node_modules/@babel/parser/src/parser/statement.js:223:21)
    at Parser.parseStatement (/node_modules/@babel/parser/src/parser/statement.js:146:17)
    at Parser.parseIfStatement (/node_modules/@babel/parser/src/parser/statement.js:570:28)
[0m[91merror Command failed with exit code 1.

这是由于browser-syncs dev-ip依赖关系中的函数外部返回导致的。
有没有办法配置我的. babelrc文件忽略这个?
我尝试了以下方法:
1.只安装生产依赖项,但由于浏览器同步是导入到我的gulp文件中的,因此它仍在编译中
1.使用Yarn设置工作空间,但问题与#1相似
1.在我的gulp文件中动态导入浏览器同步,我猜这还不支持?
1.告诉babel忽略或排除编译node_modules文件夹,但这似乎没有任何作用?
显然,babel-parser有一个选项allowReturnOutsideFunction: true,但我不知道如何在我的. babelrc文件中设置它。
有什么想法吗?

z2acfund

z2acfund1#

由于我找不到解决这个问题的办法,我最终只是分叉浏览器同步和dev-ip。
我给予你,browser-stink

v9tzhpje

v9tzhpje2#

使用Babel7,您可以通过parserOpts提供所有解析器选项(包括allowReturnOutsideFunction),例如:

// .babelrc.js
module.exports = {
  parserOpts: { allowReturnOutsideFunction: true }
};

相关问题