vue-cli: core-js module error

Version

3.5.1

Environment info

mac os 10.14.3

Steps to reproduce

vue-cli-service serve --mode development

What is expected?

run the project correctly

What is actually happening?

With useBuiltIns option, required direct setting of corejs option 98% after emitting CopyPlugin ERROR Failed to compile with 36 errors 10:20:25 These dependencies were not found:

core-js/modules/es6.array.iterator in ./src/main.js, ./src/webapp/main.js core-js/modules/es6.function.name in ./src/main.js core-js/modules/es6.number.constructor in ./src/assets/js/utils.js core-js/modules/es6.object.assign in ./src/main.js, ./src/webapp/main.js core-js/modules/es6.object.to-string in ./src/main.js, ./src/assets/js/utils.js and 2 others core-js/modules/es6.promise in ./src/main.js, ./src/webapp/main.js core-js/modules/es6.regexp.match in ./src/assets/js/utils.js core-js/modules/es6.regexp.replace in ./src/main.js, ./src/assets/js/gt.js and 3 others core-js/modules/es6.regexp.split in ./src/assets/js/utils.js core-js/modules/es6.regexp.to-string in ./src/main.js, ./src/assets/js/utils.js and 1 other core-js/modules/es6.string.includes in ./src/store.js, ./src/main.js and 2 others core-js/modules/es6.string.iterator in ./node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref–12-0!./node_modules/_babel-loader@8.0.5@babel-loader/lib!./node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref–0-0!./node_modules/_vue-loader@15.7.0@vue-loader/lib??vue-loader-options!./src/views/assets/Index.vue?vue&type=script&lang=js& core-js/modules/es6.typed.uint8-array in ./src/assets/js/utils.js core-js/modules/es7.array.includes in ./src/store.js, ./src/main.js and 3 others core-js/modules/es7.promise.finally in ./src/main.js, ./src/webapp/main.js core-js/modules/web.dom.iterable in ./node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref–12-0!./node_modules/_babel-loader@8.0.5@babel-loader/lib!./node_modules/_cache-loader@2.0.1@cache-loader/dist/cjs.js??ref–0-0!./node_modules/_vue-loader@15.7.0@vue-loader/lib??vue-loader-options!./src/views/assets/Index.vue?vue&type=script&lang=js&

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Reactions: 57
  • Comments: 30 (2 by maintainers)

Commits related to this issue

Most upvoted comments

babel.config.js

presets: [ [ "@vue/app", { useBuiltIns: "entry" } ] ]

This is reason: https://babeljs.io/docs/en/babel-preset-env#usebuiltins

This option adds direct references to the core-js module as bare imports. Thus core-js will be resolved relative to the file itself and needs to be accessible. You may need to specify core-js@2 as a top level dependency in your application if there isn’t a core-js dependency or there are multiple versions.

So you can set: presets: [ [ “@vue/app”, { useBuiltIns: “entry” } ] ].

More important, you must set polyfills in code. ref: https://cli.vuejs.org/guide/browser-compatibility.html#usebuiltins-usage

if one of your dependencies has specific requirements on polyfills, by default Babel won’t be able to detect it.

I solve it by npm install --save core-js note my Vue Cli version vue -V 3.9.2

Solved by:

  1. npm install --save core-js
  2. Updated file babel.config.js: presets: [ [ ‘@vue/app’, { useBuiltIns: ‘entry’ } ] ]

babel.config.js

presets: [ [ "@vue/app", { useBuiltIns: "entry" } ] ]

I try this, it works. why?

@dxc-jbeck please install core-js@2 rather than 3.

I think the reason is that the core-js is updated to version 3, in this version it removes these file: ‘core-js/modules/es6.array.iterator’, but the @babel/preset-env still generate these code: import “core-js/modules/es6.array.iterator”. So It leads to the errors in the topic

["@babel/preset-env",{
    "corejs": { 
        "version": 3, 
        "proposals": true 
    }
}]

image

solve

babel.config.js

presets: [ [ "@vue/app", { useBuiltIns: "entry" } ] ]

Para el template Light Bootstrap Dashboard de VUE, debes realizar esta configuracion en el archivo .babelrc

"useBuiltIns": "entry"

El archivo quedaria asi

{ "presets": [ [ "@vue/app", { "polyfills": ["es7.object.entries", "es6.promise"], "useBuiltIns": "entry" } ] ] }

Fixed in 3.5.2

yeah, if we want use core-js 3.0, we need change our babel config like this:

["@babel/preset-env",{
    "corejs": { 
        "version": 3, 
        "proposals": true 
    }
}]

or

["@babel/preset-env",{
    "corejs": "core-js@3"
}]

as our old configuration, we didn’t config the corejs version, it will adopt the corejs@2 default. But the @babel/preset-env 7.4.0 has the dependency of corejs-3.0. so it leads to these ‘not found’ errors. I think the @babel/preset-env also needs to add the dependency of corejs@2 to the package.json.

Another way to solve this if you don’t want to change the babelrc configuration, it is to install corejs@2 at the top of our dependency. just one command at your current project: npm i corejs@2

@sodatea thank you it’s working with core-js 2.65 and this in main.js

import 'core-js'
import 'core-js/shim'
import '@babel/polyfill'

这是原因:https//babeljs.io/docs/en/babel-preset-env#usebuiltins

此选项将core-js模块的直接引用添加为裸导入。因此,core-js将相对于文件本身进行解析,并且需要可访问。如果没有core-js依赖项或者有多个版本,您可能需要将core-js @ 2指定为应用程序中的顶级依赖项。

所以你可以设置:presets:[[“@ vue / app”,{useBuiltIns:“entry”}]]。

更重要的是,您必须在代码中设置polyfill。参考:https//cli.vuejs.org/guide/browser-compatibility.html#usebuiltins-usage

如果您的某个依赖项对polyfill有特定要求,默认情况下Babel将无法检测到它。

This can solve my problem