生成的Webpack 4代码中的"/*! no static exports found */"是什么意思?

12
Webpack4通常会生成以注释/*! no static exports found */开始的模块。这是一个警告吗?它实际上是什么意思?
2个回答

6

第二个 GH 链接返回 404。 - lfender6445
PR链接 -> https://github.com/webpack/webpack/pull/4918/files - Imran

4
在CommonJS、AMD和node出现之前,我们只能在浏览器中使用脚本标签,所以你需要像这样做:
<head>
  <script src="jquery"></script>
  <script src="jqueryPlugin"></script>
</head>

为了使jqueryPlugin正常工作,浏览器需要导入并在之前运行jquery。
在这个例子中,jquery没有静态输出,它是全局变异的,jqueryPlugin也是如此,所以如果你使用webpack捆绑它们,你会收到相同的消息。没有任何输出,每个脚本都会改变或利用全局变量(例如window.$ = function(){}),脚本标签必须特定地排序或连接才能正确工作。
CommonJS模块规范是Node.js中用于处理模块的标准。webpack利用module.export来优化依赖关系并防止重新打包已经打包过的块或脚本,为给定的依赖关系及其子树分配一个id。利用像babel和webpack这样的工具,你可以编写现代JS、commonjs或任何你喜欢的语法,并安全地编译到浏览器和服务器上,而不必担心语法的浏览器支持。
如果你有“老派”的脚本不利用commonjs语法,在那里你不暴露module.export(s),你必须指示webpack按特定顺序构建这些脚本,否则你就会冒险在jquery定义之前客户端执行插件。大多数情况下,浏览器从上到下执行代码。这时你会看到这条消息:

/*! 找不到任何静态导出 */

简而言之,如果您没有从原始预编译脚本中导出任何内容,则在webpack捆绑包中会有一条注释说明这一点。

有关更多详细信息,请阅读:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接