Javascript laravel mix polyfill需要巴贝尔不处理的语句
我对根据我的Javascript laravel mix polyfill需要巴贝尔不处理的语句,javascript,ecmascript-6,babeljs,polyfills,laravel-mix,Javascript,Ecmascript 6,Babeljs,Polyfills,Laravel Mix,我对根据我的浏览器列表所需的所有核心js包的laravel mix polyfill包插入require语句有问题,但它们不是由babel处理的,并显示在编译的es5代码中,在浏览器中抛出错误 编译后的代码如下所示: "use strict"; require("core-js/modules/es.symbol"); // a lot more requires omitted... require("core-js/modules/web.url.to-json"); functio
浏览器列表所需的所有核心js
包的laravel mix polyfill包插入require
语句有问题,但它们不是由babel处理的,并显示在编译的es5代码中,在浏览器中抛出错误
编译后的代码如下所示:
"use strict";
require("core-js/modules/es.symbol");
// a lot more requires omitted...
require("core-js/modules/web.url.to-json");
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
/******/
(function (modules) {
// webpackBootstrap
// etc...
这会在浏览器中引发以下错误:
coffeescript:3未捕获引用错误:未定义require
感觉事情是按错误的顺序发生的,因为babel在我的代码中处理import和require语句没有问题,但是插入的require语句(根据,应该作为导入插入,但不确定是否相关)在传输时被babel忽略
复制步骤:
- Laravel混合版本:4.1.4
- 节点版本:v12.10.0
- NPM版本:6.10.3
- OS:macOS Mojave 10.14.6(18G84)
package.json
{
"name": "laravel-mix-test",
"version": "1.0.0",
"scripts": {
"dev": "yarn run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "yarn run development --watch",
"prod": "yarn run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"@babel/core": "^7.6.0",
"@babel/plugin-transform-runtime": "^7.6.0",
"@babel/preset-env": "^7.6.0",
"babel-loader": "^8.0.6",
"core-js": "^3.2.1",
"cross-env": "^5.2.1",
"css-loader": "^3.2.0",
"laravel-mix": "^4.1.4",
"laravel-mix-polyfill": "^1.1.0",
"sass": "^1.22.12",
"sass-loader": "^7.3.1",
"vue-template-compiler": "^2.6.10",
"webpack": "^4.40.2",
"webpack-cli": "^3.3.9"
}
}
webpack.mix.js
let mix = require('laravel-mix');
require('laravel-mix-polyfill');
mix.options({
processCssUrls: false,
uglify: false
})
.polyfill({
enabled: true,
useBuiltIns: "usage",
targets: "> 0.05%, not ie < 10, safari >= 8",
corejs: 3
})
.js('src/js/app.js', 'public/js/app.js')
.babel('public/js/app.js', 'public/js/app.js')
.sass('src/scss/style.scss', 'public/css/style.css')
.copyDirectory('src/fonts', 'public/fonts')
.copyDirectory('src/images', 'public/images')
.disableNotifications();
let mix=require('laravel-mix');
要求(“laravel-mix-polyfill”);
混合选项({
processCssUrls:false,
丑:错
})
.polyfill({
启用:对,
useBuiltIns:“用法”,
目标:“>0.05%,而不是ie<10,safari>=8”,
corejs:3
})
.js('src/js/app.js','public/js/app.js')
.babel('public/js/app.js','public/js/app.js')
.sass('src/scss/style.scss','public/css/style.css')
.copyDirectory('src/fonts','public/fonts')
.copyDirectory('src/images','public/images')
.disableNotifications();
还有其他人经历过这个问题吗
非常感谢您的帮助 发生这种情况是因为您使用“用法”
作为useBuiltIns
的值。
在这种情况下,polyfill
模块将自动添加,如您所见。但当您使用laravelmix
文件顶部时,导入模块的位置是错误的
按说明使用“条目”
值