如何正确配置 babel 以使用 lodash-es?



我需要在我的项目中使用lodash-es,但我无法正确配置我的 babel,它总是报告错误,例如SyntaxError: Unexpected identifier

你好.js

import upperCase from 'lodash-es/upperCase'
console.log(upperCase('lodash-es'));

包.json

{
"scripts": {
"demo": "babel-node hello"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/node": "^7.0.0",
"@babel/preset-env": "^7.0.0"
},
"dependencies": {
"lodash-es": "4.17.11"
}
}

.babelrc

{
"presets": [
"@babel/preset-env"
]
}

babel-node hello运行时,它会报告如下错误:

> /javascript-babel-node-use-lodash-es-issue-demo
> babel-node hello
/Users/freewind/workspace/javascript-babel-node-use-lodash-es-issue-demo/node_modules/lodash-es/upperCase.js:1
(function (exports, require, module, __filename, __dirname) { import createCompounder from './_createCompounder.js';
^^^^^^^^^^^^^^^^
SyntaxError: Unexpected identifier
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)

我还为这个问题设置了一个小演示,如果需要,您可以克隆并尝试:https://github.com/freewind-demos/javascript-babel-node-use-lodash-es-issue-demo

改编自 https://stackoverflow.com/a/31822668/3563013

require("@babel/register")({
ignore: [/node_modules/(?!lodash-es)/],
});

默认情况下babel-node忽略node_modules目录。这是一件好事,否则它会不必要地沉重。node_modules中的包(目前(预计采用commonjs格式。与其使用lodash-es(es6格式(,不如只使用lodash(commonjs格式(。它具有完全相同的功能,唯一的区别是编写格式。有关这方面的更多信息,请点击此处。

因此,要么调整babel-node以取消忽略node-modules/lodash-es(不推荐!(,要么只是使用npm install --save lodash安装lodash,然后重写您的导入,如下所示:

import upperCase from 'lodash/upperCase' // instead of lodash-es
console.log(upperCase('lodash-es'));

相关内容

  • 没有找到相关文章

最新更新