Moment: Webpack - 关键依赖:依赖的请求是一个带有 2.25.0 的表达式

创建于 2020-05-01  ·  35评论  ·  资料来源: moment/moment

今天早上我将 moment 从 2.24.0 升级到 2.25.0 并开始从我的 Webpack 构建中收到此警告:
Critical dependency: the request of a dependency is an expression

我正在使用的版本:
吞咽 - 4.0.2
网络包 - 4.43.0
巴别塔 - 7.9.6

中间没有发生其他更新。 只有 moment.js 得到更新并出现警告。

最有用的评论

同样在这里,将包版本锁定到 2.24.0 现在有帮助......

所有35条评论

同样的问题

同样的问题
在 laravel vue 应用程序中安装 moment 后。
WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13 Critical dependency: the request of a dependency is an expression @ ./node_modules/moment/src/lib/locale/locale.js @ ./node_modules/moment/src/moment.js @ ./resources/js/app.js @ multi ./resources/js/app.js ./resources/sass/app.scss

同样在这里,将包版本锁定到 2.24.0 现在有帮助......

同样的问题在这里! 危急!

我有同样的问题! 将我的锁定到 2.24.0 并修复了我的构建

借调

同样在这里。 2.25.0 给出了这个问题,但 2.24.0 没有。 moment.js 中 2092:16-2096:17 的变化是根。

同样的问题,但奇怪的是仅在作为开发者运行时(这是一个 nuxt 项目)问题似乎在src/lib/locale/locales.js第 78 - 82 行,

改变:
```javascript
别名要求(
(typeof __dirname !== undefined ? __dirname : '.') +
'/语言环境/' +
名称
);
to: javascript
aliasedRequire('../locale/' + name);
````
为我解决了这个问题

我通过我的设置在 dev 和 prod 版本上都得到了它。

同样在这里,将包版本锁定到 2.24.0 现在有帮助......

是的,这是显而易见的解决方法,但并不是真正的解决方案:-)。

在调用moment.format()角度应用程序的网络浏览器中,我也收到相同的警告并出现以下控制台错误。

ERROR TypeError: __WEBPACK_IMPORTED_MODULE_2_moment__ is not a function
(main.bundle.js:11539)
Show 102 more frames

同样在这里

也确认了

等一下——这是警告,不是错误。 它仍然产生一个包吗?

随着时刻 2.25.0:

% ./node_modules/.bin/webpack
Hash: 42b60d02778538c038dc
Version: webpack 4.43.0
Time: 497ms
Built at: 05/01/2020 4:56:43 PM
    Asset      Size  Chunks             Chunk Names
bundle.js  72.2 KiB       0  [emitted]  main
Entrypoint main = bundle.js
[13] ./node_modules/moment/src/lib/units/month.js + 1 modules 9.92 KiB {0} [built]
     |    2 modules
[26] ./node_modules/moment/src/lib/create/valid.js + 1 modules 1.88 KiB {0} [built]
     |    2 modules
[36] ./node_modules/moment/src/lib/create/from-anything.js + 8 modules 25.1 KiB {0} [built]
     |    9 modules
[46] (webpack)/buildin/harmony-module.js 573 bytes {0} [built]
[47] ./node_modules/moment/src/lib/locale sync 160 bytes {0} [optional] [built]
[48] ./src/index.js + 54 modules 84.6 KiB {0} [built]
     | ./src/index.js 62 bytes [built]
     |     + 54 hidden modules
    + 43 hidden modules

WARNING in ./node_modules/moment/src/lib/locale/locales.js 78:12-82:13
Critical dependency: the request of a dependency is an expression
 @ ./node_modules/moment/src/lib/locale/locale.js
 @ ./node_modules/moment/src/moment.js
 @ ./src/index.js

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

它有效。

随着[email protected]

% ./node_modules/.bin/webpack
Hash: c16dbd62d51ed42203b2
Version: webpack 4.43.0
Time: 559ms
Built at: 05/01/2020 4:58:27 PM
    Asset     Size  Chunks                    Chunk Names
bundle.js  263 KiB       0  [emitted]  [big]  main
Entrypoint main [big] = bundle.js
[128] ./src/index.js 62 bytes {0} [built]
[129] (webpack)/buildin/module.js 497 bytes {0} [built]
[130] ./node_modules/moment/locale sync ^\.\/.*$ 3 KiB {0} [optional] [built]
    + 128 hidden modules

WARNING in configuration
The 'mode' option has not been set, webpack will fallback to 'production' for this value. Set 'mode' option to 'development' or 'production' to enable defaults for each environment.
You can also set it to 'none' to disable any default behavior. Learn more: https://webpack.js.org/configuration/mode/

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  bundle.js (263 KiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (263 KiB)
      bundle.js


WARNING in webpack performance recommendations: 
You can limit the size of your bundles by using import() or require.ensure to lazy load some parts of your application.
For more info visit https://webpack.js.org/guides/code-splitting/

它仍然有效。

等一下——这是警告,不是错误。 它仍然产生一个包吗?

是的,它确实。 仍然 - 烦人,错误并且使构建输出充满蹩脚的痕迹。

我也看到了这一点,但仅限于通过我们的 CI 进行的生产构建。

@jontybrook我看到了相同的行为,但是在 nuking node_modules 文件夹之后,我能够在本地重现它。

必须恢复带有__dirname的代码,用于修复 react-native 的问题,以便您(webpack 用户)可以查看更好的控制台输出。

在 2.25.1 中修复

这与更好的控制台输出无关……而是对于许多人来说,它不是经过理想测试的代码破坏构建!

很高兴听到它在几分钟前被修复并发布 - 最后花了几个小时在我们的最后试图找到原因

这与更好的控制台输出无关……而是对于许多人来说,它不是经过理想测试的代码破坏构建!

确切地 ! 今天的警告是明天的潜在错误。

这比警告更糟糕……如果您碰巧正在运行动态拉入最新版本的时刻的时刻时区,这会导致完全破坏代码!

等一下——这是警告,不是错误。 它仍然产生一个包吗?

如果只生产一个捆绑包是唯一想要的结果......

必须恢复带有__dirname的代码,用于修复 react-native 的问题,以便您(webpack 用户)可以查看更好的控制台输出。

在 2.25.1 中修复

为什么要讽刺?! 干净的输出很重要。 在我的设置中,我已经放置了对我很重要的统计数据和指标,并且用不必要的东西充斥它会使阅读变得乏味并且至少减慢我的工作速度。 然后事实是,从长远来看,警告总是不应该被忽视的。 最后,但实际上是第一个 - 正如@agrohs报道的那样,对于某些设置来说,糟糕。 所以......我相信在这里不适合讽刺。 不过,感谢您修复它。

很高兴看到这个问题得到解决。 将继续使用 2.24.0 直到更高版本或可能会保留它......花了很长时间才弄清楚为什么我们的网络应用程序在部署后今天早上被破坏了。

“你”webpack 用户……也就是大部分的 web 应用程序开发人员。 我们目前没有来自 webpack 进程的任何额外数据,所以我不想查看更好的控制台输出,我只是想让它工作。

仍然导致问题: https :

必须恢复带有__dirname的代码,用于修复 react-native 的问题,以便您(webpack 用户)可以查看更好的控制台输出。

在 2.25.1 中修复

除了讽刺之外,v2.25.1 实际上并没有解决任何问题( Module not found警告仍然存在)。 我通常不会批评那些自愿贡献时间的开源贡献者,但请不要对只是报告问题的用户持任何态度。 是的,警告是有原因的。 忽略它们会掩盖各种其他信息,通常会导致道路故障。

这个问题不应该被关闭……对于使用 webpack 的 moment-timezone 用户来说,这是一个突破性的变化,而不仅仅是显示警告的问题(并影响了大量的人)

同样的问题
未修复 2.25.0
不修复 2.25.1
不修复 2.25.2

我希望你恢复到原始版本。

运行检查环境
https://github.com/standard-software/partsjs/tree/v5.0.0
包.json

伙计,这不是固定的! 我们能否在缺陷得到解决之前关闭缺陷,尤其是当它们破坏现有构建(例如 Webpack)时?! @ichernev请重新打开它,因为它没有解决! 这将打破许多依赖 MomentJS 并将其与 vanilla Webpack 一起使用的人。

嗨,BUMP!,这也破坏了我的构建,未修复!。

我只是用 npm i moment 更新 moment 就解决了

此页面是否有帮助?
0 / 5 - 0 等级