【发布时间】:2018-05-01 11:13:54
【问题描述】:
webpack4 通常会生成以注释 /*! no static exports found */ 开头的模块。这是一个警告和/或它实际上意味着什么?
【问题讨论】:
标签: webpack
webpack4 通常会生成以注释 /*! no static exports found */ 开头的模块。这是一个警告和/或它实际上意味着什么?
【问题讨论】:
标签: webpack
这是它的票
https://github.com/webpack/webpack/issues/4877
以及代码中的对应行
https://github.com/webpack/webpack/blob/master/lib/FunctionModuleTemplatePlugin.js#L60
基本上不用担心。这只是意味着 webpack 没有找到任何非 CommonJS 或 AMD(动态)的导出。这是完全正常的,并非警告。
【讨论】:
在 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 已定义。在大多数情况下,浏览器自上而下执行代码。那就是你会看到消息的时候:
/*! no static exports found */
TLDR 如果您没有从原始预编译脚本中导出任何内容,您将在 webpack 包中得到一条注释说明
更多详情请阅读:
【讨论】: