编辑:如果您将依赖项设置为 2.18.1,一切都会好起来的。
编辑 2:在 package.json 中设置"moment": "2.18.1"
编辑 3:我们相信这是固定的。
你好。
使用创建反应应用程序。 将 moment 更新为 2.19.0 后,我在加载时出现此错误:
错误:找不到模块“./locale”
-> 9 个堆栈框架已折叠。
./src/utils/Utils.js
src/utils/Utils.js:1
1 | 从“时刻”导入时刻
我有同样的,确认这个错误。
同样在这里
可以确认:
This relative module was not found: * ./locale in ./node_modules/moment/src/lib/locale/locales.js
好的,我们会研究一下,但不会很快。
我们更改了 require 函数的名称,如果有人可以查看/调查它是否链接到:
https://github.com/moment/moment/pull/4213
https://github.com/moment/moment/pull/4214
同样的问题在这里。 降级能解决问题吗?
同样在这里,打破了我工作的多个应用程序。
@patricksteenks :是的。 在你的 package.json 中像这样修复"moment": "2.18.1"
@ichernev嘿,但我正在使用语言环境而不导入。 只需使用import moment from 'moment'
并像这样使用moment(date).locale('uk').format('ddd')
。 据我了解,您将 import 更改为locale
。 在我的情况下,我该如何解决这个问题?
Angular-CLI 构建项目的相同问题
确认的。
VueJS 2 Webpack 构建也受到影响。 临时修复是 GautierT 建议的(降级 momentjs)
package.json (2.19 时刻时区问题)
"moment": "2.18.1",
"moment-timezone": "^0.5.13",
package.json (一般问题)
"moment": "2.18.1"
我可以确认这也在发生!
我可以确认。
包.json
"moment": "2.18.1"
@renedx就这一行就够了
在 Angular 4 应用程序中也是如此。
刚刚降级到 2.18.1(package.json 中的严格版本号)
也被这个击中了。 我怀疑是 webpack 做了一些魔术来识别动态“require”,并且无法再以新名称识别它,因此语言环境永远不会被捆绑到包中。
(顺便说一句,这整个情况听起来很像 ES6 动态导入的用途。我们可以做梦:-)
我从这个页面在 webpack 中使用
new IgnorePlugin(/^\.\/locale$/, /moment$/)
现在删除它
并在需要
const moment = require('moment');
现在
const moment = require('moment').default;
严格来说,我认为Angular的连接很简单,因为大部分Angular项目使用的是Angular-CLI,而Angular-CLI内部使用的是Webpack。 但它可能与该堆栈中的某些特定 Webpack 配置有关。
不过,这似乎是一个相当普遍的捆绑问题。
忏悔吧,忏悔吧,末日来了!
同样在这里。
import moment from "moment"
import "moment/locale/fr"
moment.locale("fr")
WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/Users/kud/Projects/_contexte/lois-webapp/node_modules/moment/src/lib/locale'
@ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
@ ./node_modules/moment/src/lib/locale/locale.js
@ ./node_modules/moment/src/moment.js
@ ./src/index.js
在这里也是一样 - 我用纱线功能修复了它以重载包的默认设置:
将它放在您的主 package.json 中(如果您不直接加载 moment,则将“moment-timezone”调整为加载 moment 的包的名称):
"resolutions": {
"moment-timezone/moment": "2.18.1"
},
就像一颗 10 公里长的小行星……这里也一样……
MCVE: https :
修复的预计到达时间是多少?
好的,这是我们所在的位置:
运行使用 create-react-app CLI 创建的 react 应用程序时确认错误。
解决了这个降级时刻和 monent-timezone 版本。
npm install [email protected]
作为临时修复,因此您不必多次更新package.json
。 这可能会很快得到解决,然后你可以做npm i
。
@aheissenberger这救了我的命,我在 rc-calendar 上遇到了同样的问题,可以确认它适用于 yarn 1.2.0。
同样的问题 webpack 3.6.0 + moment 2.19.0。 与 2.18.1 配合良好
其他人可能有同样的问题:尽管我没有更新到 2.19.0,但在我的 package.json 中我有^2.18.1
。 我把它改成2.18.1
没有^
,现在它不会安装任何高于 2.18.1 的东西,直到我们知道 2.19.x 是安全的
@ichernev似乎很可能是“require”的重命名导致了这些广泛的破坏。 我怀疑当您需要使用类似引用的模块时,这意味着 webpack 无法检测到导入,因为它使用 AST 静态分析来确定依赖项。
也许您可以提供它正在修复的 React Native 问题的一些详细信息,因为可能有一些更好的方法可以解决该原始问题?
在我们的项目中,我们使用yarn 1.0.2
、 create-react-app
和package.json
这些 deps
"dependencies": {
"@types/history": "^4.5.0",
"@types/jest": "^20.0.6",
"@types/material-ui": "^0.18.2",
"@types/moment-timezone": "^0.5.0",
"@types/node": "^8.0.20",
"@types/react": "^16.0.10",
"@types/react-big-calendar": "^0.14.0",
"@types/react-dnd": "^2.0.33",
"@types/react-dnd-html5-backend": "^2.1.8",
"@types/react-dom": "^16.0.1",
"@types/react-modal": "^1.6.6",
"@types/react-redux": "^4.4.40",
"@types/react-router-dom": "^4.0.4",
"@types/react-router-redux": "^5.0.0",
"@types/redux": "^3.6.0",
"@types/redux-logger": "^3.0.0",
"@types/redux-promise-middleware": "^0.0.6",
"@types/validator": "6.3.0",
"lodash": "^4.17.4",
"material-ui": "0.19.2",
"material-ui-datatables": "^0.18.2",
"material-ui-fullscreen-dialog": "0.7.1",
"moment": "2.18.1",
"moment-timezone": "^0.5.13",
"react": "^15.6.1",
"react-barcode": "^1.2.0",
"react-big-calendar": "^0.15.0",
"react-bootstrap": "^0.31.0",
"react-bootstrap-table": "^3.4.2",
"react-bootstrap-time-picker": "^1.0.3",
"react-dnd": "^2.4.0",
"react-dnd-html5-backend": "^2.4.1",
"react-dock": "^0.2.4",
"react-dom": "^15.5.4",
"react-modal": "^1.7.7",
"react-pdf-js": "^2.0.5",
"react-phone-number-input": "^0.12.10",
"react-print": "^1.3.1",
"react-redux": "5.0.6",
"react-router-dom": "^4.1.1",
"react-router-redux": "next",
"react-tap-event-plugin": "^2.0.1",
"react-transition-group": "^1.1.1",
"redux": "3.7.2",
"redux-logger": "^3.0.1",
"redux-persist": "^4.8.0",
"redux-promise-middleware": "4.2.1",
"reselect": "^3.0.1",
"validator": "8.2.0",
"zxcvbn": "^4.4.2"
}
尽管我们使用"moment": "2.18.1"
,我们仍然得到
是否有解决纱线问题的方法?
@ggsjyoon :我遇到了类似的情况(仍然出现错误),直到我想起您需要更新 WebPack 正在监视的文件之一才能使其重新生成并取消任何缓存版本。
+1
@ggsjyoon你的一个包可能有额外的要求(例如时刻时区) - 你可以使用我的提示https://github.com/moment/moment/issues/4216#issuecomment -335489518 用纱线解决这个问题
我最终通过改变来解决这个问题:
import * as moment from 'moment';
到:
import * as moment from 'moment/moment';
+1
@morrisonbrett这有效。 谢谢
确认@GautierT的建议对我
@maggiepint看到什么对@morrisonbrett 有用,我认为 #4213 可能不是问题。 2.19 引入了另一个新变化, package.json 中的 module 字段 - 即之前的 webpack 使用的是转译版本。
为 React Native 启用 ES6 是导致大多数问题阻塞 #4187 的原因,#3904(仅在开发分支上有一段时间)对所有 webpack 用户进行了相同的更改。
@tqc - 可能两者都有。 @thelarkinn已经确认 webpack 不喜欢动态需求。
同样的问题,有更新吗?
@maggiepint是的,在我写完那条评论后,我意识到线程末尾的错误与开始时的并不完全相同。 ES6 方面的事情可能可以用module.exports = require(‘moment’).default
类的东西来修复,但我不确定这是否仍然允许摇树,并且节点和谐不喜欢将 import 与 require 混合。
通过 webpack 别名解决:
resolve: {
alias: {
'moment$': 'moment/moment',
},
},
有人能找出 2.19 中破坏 webpack 的所有部分,提出一个最小的 PR(基于 2.19.0),恢复“坏”部分,我们将考虑将其合并到 2.19.1。
说“我也是”1000 次并没有带来太多好处。
@morrisonbrett的解决方案有效import * as moment from 'moment/moment';
我可以用 Angular-CLI v1.4.4 确认同样的问题。 当我看到涉及 momentjs 的错误时,我最初感到很惊讶,因为我的项目没有使用它,但经过调查,我将其注入追溯到 WebPack。
这是我构建时的警告消息:
WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale'
resolve './locale' in '/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale'
using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale)
using description file: /Users/scott/Development/web-admin/node_modules/moment/package.json (relative path: ./src/lib/locale/locale)
as directory
/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale/locale doesn't exist
[/Users/scott/Development/web-admin/node_modules/moment/src/lib/locale/locale]
@ ./node_modules/moment/src/lib/locale/locales.js 65:16-60
@ ./node_modules/moment/src/lib/locale/locale.js
@ ./node_modules/moment/src/moment.js
@ ./src/app/admin-analytics/admin-analytics.component.ts
@ ./src/$$_gendir/app/app.module.ngfactory.ts
@ ./src/main.ts
@ multi ./src/main.ts
我也尝试过import * as moment from 'moment/moment';
方法,但我的情况没有运气。
嘿@kud , @AleshaOleg——如果你还在尝试导入语言环境:
代替:
import 'moment/locale/*
尝试:
import 'moment/src/locale/*'
一直在这里与同样的问题作斗争......
————
@AleshaOleg :在您的用例中,我认为可能是:
import moment from 'moment'
import 'moment/src/locale/uk'
然后只需调用moment(date).format('ddd')
谢谢@dialnco !
在更新到2.19.0
,我最终通过完全禁用尝试加载语言环境的代码来解决这个问题。
({
test: /moment\/src\/lib\/locale\/locales.js$/,
enforce: 'pre',
use: {
loader: 'imports-loader',
options: {
module: '>undefined', // this disables the if
require: '>false' // this prevents webpack from trying to parse the requires
}
}
})
然后我根据我的应用程序的需要手动添加import 'moment/src/locale/ja'
、 import 'moment/src/locale/pt-br'
等,而不是加载所有语言环境。 如果您有创意,您可以使用动态import()
来代替仅加载您的应用程序所需的语言。
非常重要的是,如果你这样做,你不做import 'moment/locale/foo'
,而是import 'moment/src/locale/foo'
。 由于语言环境文件尝试引用moment
本身的方式,它们将改为捆绑moment
的第二个副本(这次是 UMD 构建而不是 ESM 构建),这将在反过来,再次加载所有语言环境。
我希望这对某人有所帮助(上面评论中的选项 1 和 2,感谢@patsissons ):
- 如果您没有任何加载 moment.js 的模块,但您的应用程序有,只需移至旧版本
-如果您有任何模块也有依赖项中的 moment.js 上面的内容对您没有帮助,您必须修改您的 webpack 配置:
{...
解决: {
...
别名:{
'时刻$': '时刻/时刻',
}
}
}
- 但是,如果您使用的是 react-create-app(就像我一样)并且需要尽快进行构建,这是您运行“npm 弹出”的唯一选择,这样您就可以访问 webpack 配置和第二个选项将为您提供。
所以我很抱歉,但在这里工作的唯一方法是@patsissons的方法。 https://github.com/moment/moment/issues/4216#issuecomment -335637520
仍然
import moment from "moment"
import "moment/locale/fr"
moment.locale("fr")
但是在 webpack 中添加
resolve: {
alias: {
'moment$': 'moment/moment',
}
},
出于某种原因,yarn 忽略了 package.json 中我的“分辨率”设置。
如果您使用的是moment-timezone ,则修复它的一种hacky方法是编辑yarn.lock
[email protected]:
version "2.18.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
"moment@>= 2.9.0":
version "2.18.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
我们等待修复 2.19.1....
有人可以描述这里的实际问题是什么吗? 仅仅是 webpack 没有识别别名 require() 吗?
@TomMettam 2.19.0 将webpack 指向 moment/src/moment 中的 es6 代码,它不会导出与 moment/moment 完全相同的接口。
最重要的是,别名 require 可以防止 webpack 打包所有可能被动态请求的文件。 手动导入语言环境文件是可行的,除了从 moment/locale 导入的明显选择会将它们加载到您实际使用的不同 moment 实例中。
如果这太简单了,不同版本的 yarn/npm 的行为存在差异 - 我碰巧使用的 npm 版本使用根应用程序 node_modules 文件夹中的任何包实例,但其他版本使更难覆盖使用的包。
谁认为在次要版本中更改导出签名是个好主意?
请注意,这也打破了依赖于时刻的 3rd 方库
+1
小升级是不可接受的。
我理解背后的想法,但请对 semver 更加严格。
@darkalor这不是故意的 - 有问题的导出签名只是在有限的一组情况下有实质性的不同 - 那种在暴露给大量用户之前似乎工作得很好的东西。
@darkalor @kud - 发生回归。 请尽量有建设性; 每个人都知道这不应该发生,咆哮对任何人都没有帮助。
@TomMettam是的,它发生了,但是当它发生时你可以处理它,通过处理我的意思是你可以将它升级为主要的,而不是次要的。 就这样。 我不怪任何人,我怪的是如果有人认为“哦,好吧,我可以升级,因为它只是未成年人”的情况,在这种情况下是错误的。 ;)
我感谢当下所做的所有工作,但我只谈论不稳定的情况。
我没有冒犯任何人,对不起。
@kud不是当您必须在知道回归存在之前选择版本号时。 支持 moment 的环境数量所需的复杂程度令人印象深刻。
@tqc但现在你知道了,就是这样。 正如@TomMettam之前
删除或/和添加标签是可能的。
无论如何,我不会再在这里发送垃圾邮件了,感谢您的解决方法;我在更新日志中为没有关注这个问题的其他人添加了一条注释: https: //gist.github.com/ichernev/5f3f4eb02761b4f765a0cccf02cec603#gistcomment -2226628
祝你有美好的一天。 :)
我使用纱线作为我的包管理器。 出于某种原因,我的 yarn.lock 文件没有更新以反映我在 package.json 文件中所做的更改。 我的设置如@daniesy所说。 问题是我的 yarn.lock 文件中的时刻时区仍然取决于时刻版本“^2.18.1”。
为了修复它,我运行了一个yarn cache clean :
yarn cache clean
然后 :
yarn install
希望这应该使用以下内容重新生成您的yarn.lock文件:
[email protected]:
version "0.5.13"
resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.13.tgz#99ce5c7d827262eb0f1f702044177f60745d7b90"
dependencies:
moment ">= 2.9.0"
[email protected], [email protected], "moment@>= 2.9.0", moment@^2.17.1:
version "2.18.1"
resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
无论哪种方式,只需检查您的纱线锁是否试图在任何模块中包含大于 2.18.1 的时刻版本,尤其是时刻-时区和时刻。
我想我们有一个修复: https :
最好的部分 - 我认为这对 webpack 和 react native 都有效 - 没有悲伤!
我已经在 webpack 中进行了测试,但是有人会使用 React Native 测试吗? 请注意,在使用 npm 链接进行测试之前,您需要运行 grunt release 来构建文件。
@maggiepint - 是否有可能也适用于 Angular-CLI?
2.19.1出来了,试一试
使用 Webkit 对我有用。
谢谢@ichernev和所有参与的人!
@ichernev : 对我有用。
反应 16.
创建反应应用程序。
未弹出
加载这样的时刻:
import moment from 'moment'
import 'moment/locale/fr'
感谢您的修复。 👍
刚刚使用 angular-cli/webpack 启动了另一个 VSTS 构建并重新部署到环境中
一切恢复正常
谢谢
我也可以确认这个问题已在 Angular-CLI v1.4.4 中得到解决。 谢谢!
适用于 typescript/webpack/karma/phantomjs。 感谢您的修复!
为了使它工作,我只是在片刻之前包含了语言环境文件。
import 'moment/locale/de';
import moment from 'moment';
后来做了moment.locale("de");
似乎仍然存在于“版本”:“2.22.2”?
我也在使用 2.22.2。 问题仍然存在
我正在使用 2.22.2 并看到同样的问题。
如上。 同样的问题,同样的版本。
使用 react native 并在发布版本中看到此错误:
09-04 13:47:38.684 26530 26554 E ReactNativeJS: Requiring unknown module "./locale/de".
09-04 13:47:38.693 26530 26555 E AndroidRuntime: FATAL EXCEPTION: mqt_native_modules
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Process: com.integreat, PID: 26530
09-04 13:47:38.693 26530 26555 E AndroidRuntime: com.facebook.react.common.JavascriptException: Requiring unknown module "./locale/de"., stack:
09-04 13:47:38.693 26530 26555 E AndroidRuntime: c<strong i="6">@2</strong>:649
09-04 13:47:38.693 26530 26555 E AndroidRuntime: i<strong i="7">@2</strong>:394
09-04 13:47:38.693 26530 26555 E AndroidRuntime: t<strong i="8">@2</strong>:324
09-04 13:47:38.693 26530 26555 E AndroidRuntime: vt<strong i="9">@882</strong>:16755
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Mt<strong i="10">@882</strong>:17781
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Mn<strong i="11">@882</strong>:29014
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="12">@1006</strong>:1442
09-04 13:47:38.693 26530 26555 E AndroidRuntime: qn<strong i="13">@108</strong>:40634
09-04 13:47:38.693 26530 26555 E AndroidRuntime: tr<strong i="14">@108</strong>:46334
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Nr<strong i="15">@108</strong>:56528
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ur<strong i="16">@108</strong>:56960
09-04 13:47:38.693 26530 26555 E AndroidRuntime: ui<strong i="17">@108</strong>:61804
09-04 13:47:38.693 26530 26555 E AndroidRuntime: oi<strong i="18">@108</strong>:61224
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ue<strong i="19">@108</strong>:68050
09-04 13:47:38.693 26530 26555 E AndroidRuntime: Ie<strong i="20">@108</strong>:14248
09-04 13:47:38.693 26530 26555 E AndroidRuntime: We<strong i="21">@108</strong>:14421
09-04 13:47:38.693 26530 26555 E AndroidRuntime: receiveTouches<strong i="22">@108</strong>:15235
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="23">@18</strong>:3352
09-04 13:47:38.693 26530 26555 E AndroidRuntime: <unknown><strong i="24">@18</strong>:935
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="25">@18</strong>:2621
09-04 13:47:38.693 26530 26555 E AndroidRuntime: value<strong i="26">@18</strong>:907
2.22.1 作品
仍然不为我工作
我也不能让 2.18.1 为我工作
2.22.1 英尺,哈哈
还注意到 v2.22.2 中的回归。 回滚到 2.22.1 为我修复了它。
大家好,
有同样的问题(在 Laravel 中使用 Webpack)。 这并不理想,但对我有用的快速修复是将存储库的“locale”文件夹与 moment.js 或 moment-with-locale.js 文件一起复制。
在v2.22.2
上也遇到了这个问题。
为了使它工作,我只是在片刻之前包含了语言环境文件。
import 'moment/locale/de'; import moment from 'moment';
后来做了moment.locale("de");
@mj1856重新打开这个问题合适还是我们应该创建一个新的/新的? 我也再次看到这个。 在我的情况下,回滚到 2.22.1 并没有修复它,我不得不使用@patsissons修复来让 webpack 再次开心。
相同的
我使用了 allowSyntheticDefaultImports,如此处的文档中所述: https ://momentjs.com/docs/#/use -it/typescript/,它为我解决了Cannot find module "./locale"
错误。 请注意,在我的 IDE 中还需要导入上方的// @ts-ignore
。
同样的问题, moment:'2.18.1'
这仍然建议: import moment from "moment/min/moment-with-locales";
吗?
b/c 我最终遇到了与[email protected]
和 CRA 相同的 (?) 错误:
./node_modules/moment/min/moment-with-locales.js
Module not found: Can't resolve './locale' in '/...myproject/node_modules/moment/min'
对于所有那些互联网路人,如果您使用 rollup 构建,您可以通过以下方式修复它:
假设您正在使用rollup-plugin-node-resolve
:
import commonjs from "rollup-plugin-commonjs";
import nodeResolve from "rollup-plugin-node-resolve";
export default {
// your config...
plugins: [
nodeResolve({
mainFields: ["module", "jsnext:main", "main"],
preferBuiltins: false,
}),
commonjs({
include: "node_modules/**",
}),
]
}
moment
有package.json
入门jsnext:main
,我们可以在这里利用。 在构建过程中为我们包含语言环境。 你的包大小会增加,但它会防止控制台错误😅
我的 React 应用程序中的 moment 版本 2.24.0 也有同样的问题。 我想这个问题还没有解决。
我的 React 应用程序中的 moment 版本 2.24.0 也有同样的问题。 我想这个问题还没有解决。
确认。 “时刻”:“2.24.0”。 2.18.1 未解决问题。 节点 v12.16.0
同样在这里,我的 Preact 项目使用2.24.0
。
还是遇到这个问题请帮忙!!
对我来说,破:“时刻”:“^ 2.24.0”(解析为2.25.0)
未断:“时刻”:“2.24.0”
如果您使用纱线,请添加分辨率块以覆盖子依赖项的版本:
"resolutions": {
"moment": "2.24.0"
}
使用"moment": "2.24.0"
并按照@rilyu 的建议,使用分辨率。 为我工作。
恢复到“2.24.0”并删除“^”对我有用。 看起来他们的最新版本昨晚推出了并且正在扔掉它。
面临"moment": "^2.24.0",
。
Uncaught Error: Cannot find module './locale'
at
同样的问题。 使用@enewhuis解决方案解决。 谢谢!
同样的问题。 使用@enewhuis解决方案解决。 谢啦。
解决了@enewhuis和@rilyu 的问题。 谢谢。
同样的问题。 @enewhuis的救援解决方案
对我来说,破:“时刻”:“^ 2.24.0”(解析为2.25.0)
未断:“时刻”:“2.24.0”
谢谢你,我整天都在为此挣扎
相同的错误和相同的修复在这里。 我正在使用时刻时区。
前:
"moment-timezone": "^0.5.28",
后:
"moment": "2.24.0",
"moment-timezone": "^0.5.28",
相同的错误和相同的修复在这里。 我正在使用时刻时区。
前:
"moment-timezone": "^0.5.28",
后:
"moment": "2.24.0", "moment-timezone": "^0.5.28",
不为我工作 -
"moment": "2.24.0",
"moment-timezone": "0.5.28",
上述修复对我不起作用。 Node v12.6.0,yarn v1.22.4,react-scripts-ts
为我们工作
"resolutions": {
"moment": "2.24.0"
},
和
"moment": "2.24.0",
"moment-timezone": "0.5.28",
使用纱线
如果没有分辨率块,它就无法工作。
是的,我可以确认添加resolutions
块对我有用。 我不知道为什么,虽然...
谢谢@mtogstad !
@mtogstad解决方案有效!
我不明白这个错误怎么会随机出现并破坏我的反应应用程序
@bodyfarmer你能写下你如何解决它的步骤吗?
我在 React 应用程序中面临同样的问题。
大家好!
过去几个小时我遇到了同样的问题,最后我通过更改时刻版本解决了它。
在上面的评论中,我看到了最终的解决方案。
原因:
_moment 17小时前发布新版本从2.24.0到2.25.0_
解决方案:
第 1 步:更改版本
第 2 步:如果您使用纱线,请在您的 package.json 文件中添加分辨率,如下所示
“依赖”{
"时刻": "2.24.0",
“时刻时区”:“^0.5.28”
},
“决议”:{
“时刻”:“2.24.0”
},
谢谢。
谢谢, @jolalla ,我首先尝试降级版本,但对我不起作用。 最后添加分辨率块显示了一些魔法:)
对于其他在 React 应用程序中遇到类似问题的人。 他们可以执行以下 2 个步骤来解决它。
在依赖项中,替换"moment": "^2.24.0",
和"moment": "2.24.0",
并在 package.json 中添加分辨率块
"resolutions": {
"moment": "2.24.0"
}
为什么这个问题被关闭了!?!??!?
切换到 luxon 的好时机,这是我为一个时刻使用率低的项目所做的。
有同样的问题
“决议”:{
“时刻”:“2.24.0”
}
解决我的问题。
谢谢。
还有什么我可以尝试的吗? "moment": "2.24.0"
,和"resolutions": {
"moment": "2.24.0"
}
不是为我修的。 这是用于 Heroku 部署的。 任何想法表示赞赏。
如果碰巧其他人拥有 monorepo(和/或正在使用 package.json 中的工作区),则使用前一时刻版本 2.24.0 的“解决方案”修复仅在应用到根级别 package.json 时才有效。 在我们的案例中,我们必须执行以下操作:
{“分辨率”:{“**/时刻”:“2.24.0”}}。
真的希望 2.25 版尽快得到正确修复!
如果您使用纱线,请添加分辨率块以覆盖子依赖项的版本:
"resolutions": { "moment": "2.24.0" }
我已经处理了一个小时。 删除^
帮助。
对于使用 create-react-app 并且不想弹出 CRA 的人,您可以安装:
然后在项目的根目录创建一个config-overrides.js
以进一步覆盖。
module.exports = function override(config, env) {
// do stuff with the webpack config...
return config;
};
编辑您的 package.json:
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test",
因为我使用蚂蚁设计,所以我的config-overrides.js
看起来像这样:
const { override, fixBabelImports } = require("customize-cra");
const webpack = require("webpack");
const fixMomentJs = (config) => {
config.plugins.push(
new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
if (!/\/moment\//.test(context.context)) {
return;
}
// context needs to be modified in place
Object.assign(context, {
// include locales
regExp: /^\.\/(fr|en)/,
// point to the locale data folder relative to moment's src/lib/locale
request: "../../locale",
});
})
);
return config;
};
module.exports = override(
fixMomentJs,
fixBabelImports("import", {
libraryName: "antd",
libraryDirectory: "es",
style: "css",
})
);
但你的会更简单,我认为是这样的:
module.exports = function override(config, env) {
config.plugins.push(
new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
if (!/\/moment\//.test(context.context)) {
return;
}
// context needs to be modified in place
Object.assign(context, {
// include locales
regExp: /^\.\/(fr|en)/,
// point to the locale data folder relative to moment's src/lib/locale
request: "../../locale",
});
})
);
return config;
};
谢谢, @jolalla ,我首先尝试降级版本,但对我不起作用。 最后添加分辨率块显示了一些魔法:)
对于其他在 React 应用程序中遇到类似问题的人。 他们可以执行以下 2 个步骤来解决它。
在依赖项中,替换
"moment": "^2.24.0",
和"moment": "2.24.0",
并在 package.json 中添加分辨率块
"resolutions": { "moment": "2.24.0" }
为我工作。 谢谢
@hasanmehmood对我
谢谢, @jolalla ,我首先尝试降级版本,但对我不起作用。 最后添加分辨率块显示了一些魔法:)
对于其他在 React 应用程序中遇到类似问题的人。 他们可以执行以下 2 个步骤来解决它。
在依赖项中,替换
"moment": "^2.24.0",
和"moment": "2.24.0",
并在 package.json 中添加分辨率块
"resolutions": { "moment": "2.24.0" }
也适用于我! 谢谢!! :D
使用 npm 在我的 angular 8 应用程序上这样做了几个小时。
"devDependencies": {...},"resolutions": {
"moment": "2.24.0"
}
到 package.jsonrm -rf node_modules package-lock.json && yarn
我非常绝望......我正在使用时刻 2.25.1 并更改 "devDependencies": {...},"resolutions": { "moment": "2.25.1" } 如上所述......不是在职的
我正在使用 npm。 我是 react 的新手,devDependencies 在哪里?
我已经改变了这一点,但它仍然无法正常工作
我正在使用版本“2.25.1”并且仍在发生!
@m4mariaoni - 那是因为你没有安装--save-dev
,所以你正在改变正确的部分。
如果您在将 moment 锁定到 2.24.0 后仍然遇到此问题,请从 node_modules 删除 moment 文件夹并使用npm install --save
重新安装您的软件包
谢谢, @jolalla ,我首先尝试降级版本,但对我不起作用。 最后添加分辨率块显示了一些魔法:)
对于其他在 React 应用程序中遇到类似问题的人。 他们可以执行以下 2 个步骤来解决它。
在依赖项中,替换
"时刻": "^2.24.0",
和
"时刻": "2.24.0",
并在 package.json 中添加分辨率块
“决议”:{
“时刻”:“2.24.0”
}
也适用于我! 谢谢!! :D!想!
谢谢, @jolalla ,我首先尝试降级版本,但对我不起作用。 最后添加分辨率块显示了一些魔法:)
对于其他在 React 应用程序中遇到类似问题的人。 他们可以执行以下 2 个步骤来解决它。
在依赖项中,替换
"moment": "^2.24.0",
和"moment": "2.24.0",
并在 package.json 中添加分辨率块
"resolutions": { "moment": "2.24.0" }
更换
"moment": "^2.24.0",
和
"moment": "2.24.0",
为我工作! 通常,
rm -rf package-lock.json && node_modules
尽管采取了上述所有措施,但仍然无法正常工作......
这令人沮丧
以前创建的存储库与 React 一起使用了 moment 2.24.0,它仍在工作,但现在安装 moment2.24.0,不起作用......(我也尝试过上述所有措施)
原因是什么?
我想你可能在 package.json @wlsdud2194 的某个地方有一个 ^2.24.0 而不是 2.24.0?
我没有,但错误仍然不断出现。 有点奇怪
时刻版本是 package.json 中的2.24.0
而不是^2.24.0
,因为我安装了它。
我按照这个流程,上面的措施之一
- 添加分辨率块
- 删除
node_modules
目录并从纱线重新安装包。
对我有用,但不知道为什么工作......😂
感谢您的关注:) @agrohs
不得不从^2.25.1
降级到2.24.0
来解决这个问题
我没有,但错误仍然不断出现。 有点奇怪
尝试运行npm ls moment
以查看是否有其他模块也使用 moment
And add the resolutions block in package.json
"resolutions": { "moment": "2.24.0" }
remove node_modules directory and reinstall package from yarn.
rm -rf package-lock.json && node_modules
联系人:刘先生
联系电话:18908205973
传真:028-86676917
E-mail:[email protected]
公司名称:成都首志科技有限公司
公司网址:www.szdma.com
地址:成都市滨江东路162号银海大厦
成都首志科技有限公司成立于2010年,是成都一家面向中小企业的专业软件定制开发公司,公司主要服务对象是中小企业,提供局域网搭建、网站建设、软件定制解决方案等,并提供从手工业务到电脑业务一整套服务。公司以“诚信为本,服务至上”的原则,突现公司形象;通过我们不懈努力,为客户提供优质服务。
我们收到Webpack Error: Cannot find module "./locale"
错误。 我们在我们的项目中使用了“react-redux-i18n”包,它依赖于“react-i18nify”,而这又依赖于“moment”。 内部“时刻”配置为使用导致此错误的最新版本。
在依赖项中
“反应”:“^ 16.8.1”,
"时刻": "2.24.0",
“时刻时区”:“^0.5.28”,
"react-moment-proptypes": "^1.5.0",
"react-redux-i18n": "^1.9.3",
"react-redux": "^6.0.0",
任何帮助将不胜感激。
最新的补丁2.25.3好像已经修复了,更新momentjs版本为: "moment": "^2.25.3"
in package.json
删除 node_modules 文件夹,然后运行yarn install
或npm install
应该这样做。
对于那些已经失去信心,并且不希望他们的应用程序在未来再次发生的问题完全摆脱的人 - 我将一个中等大小的代码库切换到 luxon 没有太多麻烦。
谢谢大家...
我将版本更改为 24.0 并添加了 "resolutions": { "moment": "2.24.0" } 并运行 npm install
然后它似乎又工作了(顺便说一下,与 React 一起工作)。
干杯!
最新的补丁2.25.3好像已经修复了,更新momentjs版本为:
"moment": "^2.25.3"
in package.json
删除 node_modules 文件夹,然后运行yarn install
或npm install
应该这样做。
谢谢@jasontll ,它对我
今天这些解决方案都不适合我。
在我的反应应用程序上这样做了几个小时
与 npm。1. I updated from moment 2.17 to 2.24 2. I added the resolutions as adviced above - `"devDependencies": {...},"resolutions": { "moment": "2.24.0" }` to package.json 3. Changed to yarn by doing the following. `rm -rf node_modules package-lock.json && yarn` Thanks a lot guys
它也对人们有用,非常感谢:-)
我也遇到这个麻烦。 我已经用"moment": "^2.26.0"
的最新版本修复了它
最有用的评论
@patricksteenks :是的。 在你的 package.json 中像这样修复
"moment": "2.18.1"