我在我的项目中添加了一个新的npm包,并在我的一个模块中要求它。
现在我从webpack得到这个消息,
注意:代码生成器已经取消了“D:/path/to/project/node_modules/ramda/dist/ramda.js”的样式,因为它超过了“100KB”的最大值。
这是什么意思?我需要采取一些行动吗?
我在我的项目中添加了一个新的npm包,并在我的一个模块中要求它。
现在我从webpack得到这个消息,
注意:代码生成器已经取消了“D:/path/to/project/node_modules/ramda/dist/ramda.js”的样式,因为它超过了“100KB”的最大值。
这是什么意思?我需要采取一些行动吗?
当前回答
我试过里卡多·斯图文的方法,但对我没用。最终起作用的是在我的.babelrc文件中添加"compact": false:
{
"compact": false,
"presets": ["latest", "react", "stage-0"]
}
其他回答
这与Babel编译器的压缩选项有关,该选项命令“不包括多余的空格字符和行结束符”。当设置为“auto”时,在输入大小为>100KB时,compact设置为true。”默认情况下,它的值是“auto”,所以这可能是您收到警告消息的原因。参见Babel文档。
您可以使用查询参数从Webpack更改此选项。例如:
loaders: [
{ test: /\.js$/, loader: 'babel', query: {compact: false} }
]
以下三个选项中的任何一个都可以摆脱信息(但我认为原因和副作用不同):
排除node_modules目录或显式包含应用程序所在的目录(假定不包含超过100KB的文件) 将Babel选项压缩为true(实际上是除"auto"之外的任何值) 将Babel选项压缩为false(见上文)
上面列表中的#1可以通过排除node_modules目录或显式包括应用程序驻留的目录来实现。
例如,在webpack.config.js中:
let path = require('path');
....
module: {
loaders: [
...
loader: 'babel',
exclude: path.resolve(__dirname, 'node_modules/')
... 或者使用include: path。解析(__dirname, 'app/')(同样在webpack.config.js中)。
上面列表中的#2和#3可以通过这个答案中建议的方法来完成,或者(我的偏好)通过编辑.babelrc文件来完成。例如:
$ cat .babelrc
{
"presets": ["es2015", "react"],
"compact" : true
}
使用以下设置进行测试:
$ npm ls --depth 0 | grep babel
├── babel-core@6.7.4
├── babel-loader@6.2.4
├── babel-preset-es2015@6.6.0
├── babel-preset-react@6.5.0
在react/redux/webpack/babel build中,通过删除脚本标签类型text/babel修复了此错误
有错误:
<script type="text/babel" src="/js/bundle.js"></script>
没有错误:
<script src="/js/bundle.js"></script>
我有同样的问题与视频.js,添加特定的包解决了我的问题。
exclude: devMode ? /node_modules/ : [
/node_modules\/video.js/, /@babel(?:\/|\\{1,2})runtime|core-js/],
这可能不是最初OP问题的情况,但是:如果您超过了默认的最大大小,这可能是您遇到的其他问题的症状。在我的情况下,我有警告,但最终它变成了一个致命错误:MarkCompactCollector:半空间复制,回调在旧代分配失败- JavaScript堆出内存。 原因是我动态地导入了当前模块,所以这最终导致了一个无休止的循环……