WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in 'D:\project-fed\ecloud\client-web\node_modules\moment\src\lib\locale'
我发现下面的函数有问题
function loadLocale(name) {
var oldLocale = null;
// TODO: Find a better way to register and load all the locales in Node
if (!locales[name] && (typeof module !== 'undefined') &&
module && module.exports) {
try {
oldLocale = globalLocale._abbr;
var aliasedRequire = require;
aliasedRequire('./locale/' + name);
getSetGlobalLocale(oldLocale);
} catch (e) {}
}
return locales[name];
}
aliasedRequire('./locale/' + name);
,应该是../locale/
吗?
当我使用 webpack 捆绑时刻时,我看到了同样的警告。 知道这个错误是什么时候引入的吗?
我使用 angular-cli 有相同的警告有什么解决方案吗?
有同样的问题。 你知道任何解决方法/修复吗?
同样的问题 - 看起来像是“./locale”与“../locale”的路径问题。 有人在研究这个错误吗?
https://github.com/moment/moment/issues/2979
看起来多年来一直如此,为什么他们不会修复它我不知道。 当我尝试在 webpack 中使用jsnext:main而不是 main 时,我也遇到了这个问题。
我的解决方法是继续在 webpack 中使用jsnext:main来处理其他已正确转换 es6 代码的包:使用别名强制 webpack 直接使用 moment.js,因为它在 pkg.main 中指定
...
resolve: {
alias: {
moment$: path.resolve(root_dir, "node_modules/moment/moment.js")
}
}
以上对我不起作用,但按照本教程帮助我解决了这个问题。
这有什么新的吗? 我正在使用 Laravel Mix ......这里也是一样......
我愿意
import * as moment from 'moment';
这有效。
我愿意
import * as moment from 'moment';
这有效。
在 webpack 里面? 我正在考虑如何使用Laravel Mix做到这
@marcelogarbin哦,对不起,我从第 4 版开始就没有使用过 Laravel。我很抱歉,但是。我不知道如何让它与 Laravel 混合使用。
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
@yaasinhamidi的解决方案成功了
我愿意
import * as moment from 'moment';
这有效。
这条线应该放在哪里?
更新到 2.25.0 后第一次遇到同样的问题。 我也在使用 Laravel Mix(注意,我从未在任何以前的版本上遇到过这个问题)。
我的解决方法是回到 2.24.0
更新后我面临同样的问题
在修复之前,回滚到 v2.24.0 可以解决此问题。
回滚到 v.2.24.0 也对我有用。
对于遇到此问题的其他任何人,我还必须强制将node_modules/
文件夹中的其他软件包作为依赖项引入 v2.24.0 的时刻版本
使用纱线,将此行添加到 package.json 为我排序
"resolutions": {
"**/moment": "2.24.0"
},
大家好!
过去几个小时我遇到了同样的问题,最后我通过更改时刻版本解决了它。
在上面的评论中,我看到了最终的解决方案。
原因:
_moment 17小时前发布新版本从2.24.0到2.25.0_
解决方案:
第 1 步:更改版本
第 2 步:如果您使用的是纱线,请在您的 package.json 文件中像这样添加分辨率
“依赖”{
"时刻": "2.24.0",
“时刻时区”:“^0.5.28”
},
“决议”:{
“时刻”:“2.24.0”
},
谢谢你。
即使你有,跟随块。 package-lock.json 将创建一个新版本,即 2.5.1。 因此,将其更改为 "moment": "2.24.0" 直到问题得到解决。
“依赖”{
“时刻”:“^2.24.0”,----------------> “时刻”:“2.24.0”
},
我回滚到 2.24.0 但在使用节点时仍然有相同的警告
很奇怪,我今天在重新安装依赖项后开始收到此错误,建议使用 webpack 忽略语言环境插件的修复方法不起作用。 按照@sachins81 的建议,将版本固定在 2.24.0 是
我回滚到 2.24.0 但在使用节点时仍然有相同的警告
@nitindevelopermca确保它是“2.24.0”而不是“^2.24.0”。 (更改后为我工作)
我刚刚回滚到“^2.18.1”,一切似乎都正常
同样的问题使用反应,时刻不是我的项目的依赖,所以我不能回滚它
同样的问题使用反应,时刻不是我的项目的依赖,所以我不能回滚它
您现在可以运行此命令。
npm install [email protected] --save
我有同样的情况,当我以某种方式搜索时,antd 正在使用 moment 作为依赖项,我希望在下一个版本中关闭 moment 问题,因为我看到他们发布了新版本,所以请先尝试最新版本2.25.1然后尝试添加 moment 作为依赖项。
谢谢你!
它帮助我在dependencies
和resolutions
内更改为固定版本2.24.0
resolutions
。 我在我的代码中使用该包,并将其作为react
和antd
的依赖项。
如果您有多个工作区,请不要忘记更改所有package.json
文件。 我一开始忘记了这一点。
在 v2.25.1 中发生了同样的问题,然后我尝试在 package.json 中添加这些(我使用纱线):
"dependencies" {
"moment": "2.24.0"
},
"resolutions": {
"moment": "2.24.0"
},
同样的错误在这里。 我有
"dependencies": {
"moment": "^2.25.1"
}
当我运行npm run production
我得到:
shell script
WARNING in ./node_modules/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/var/www/apf.local/html/node_modules/moment/src/lib/locale'
@ ./node_modules/moment/src/lib/locale/locales.js
@ ./node_modules/moment/src/lib/locale/locale.js
@ ./node_modules/moment/src/moment.js
@ ./resources/js/app.js
@ multi ./resources/js/app.js
使用~2.24.0
版本,一切都按预期工作。
大家好!
过去几个小时我遇到了同样的问题,最后我通过更改时刻版本解决了它。在上面的评论中,我看到了最终的解决方案。
原因:
_moment 17小时前发布新版本从2.24.0到2.25.0_解决方案:
第 1 步:更改版本
- "时刻": "2.24.0",
- "时刻时区": "^0.5.28",
第 2 步:如果您使用的是纱线,请在您的 package.json 文件中像这样添加分辨率
“依赖”{
"时刻": "2.24.0",
“时刻时区”:“^0.5.28”
},
“决议”:{
“时刻”:“2.24.0”
},谢谢你。
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
伟大的! 有用!
谢谢 。
它的工作正常。 只需导入以下行:
从“时刻/时刻”导入 * 作为时刻;
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
很棒的修复 :) 解决了一个令人头疼的问题
Fantastic fix :) solved a major headache with this
平庸的修复,如果有人没有直接将 antd 作为依赖项。
我遇到了同样的问题,但我的依赖项中没有 momentjs。 但是 antd 可以。
并且 npm 无法使用分辨率。
现在对我来说唯一的解决方案是降级 antd。
我看不到正确的解决方案,它不会包含额外的包来使事情正常进行。
我的 React 应用程序中有同样的问题,由于某种原因,它开始突然出现。 我一直在这个应用程序中使用moment
并且从来没有注意到这个错误。 在我的情况下,它实际上变成了一个错误,因为我的 React 应用程序不会因为这个问题而编译。
然后我尝试了import moment from 'moment/moment';
,它修复了编译问题,但每次运行应用程序时我仍然收到以下警告。
./node_modules/moment/src/lib/locale/locales.js
Module not found: Can't resolve './locale' in 'C:\Users\myname\source\repos\myapp\node_modules\moment\src\lib\locale'
唯一的好处是我的 React 应用程序至少可以编译并运行良好。
我对 create-react-app (打字稿模板)也有同样的问题。我试过import moment from 'moment';
。然后我得到了错误:
./node_modules/moment/src/lib/locale/locales.js
Module not found: Can't resolve './locale' in 'D:\MyName\Learning\ProjectName\node_modules\moment\src\lib\locale'
@devayarhlaine我在上面的评论中发布了一个临时解决方案,请检查它。
这是一个新版本问题。
同上:
我也有“找不到模块'时刻'”的同样问题。
使用带有“import * as moment from 'moment/moment'”的解决方案解决了一个问题。
但后来我得到了错误:
./node_modules/moment/src/lib/locale/locales.js 找不到模块:无法解析“D:\MyName\Learning\ProjectName\node_modulesmoment\src\lib\locale”中的“./locale”
降级不是解决方案(在我看来:-)。
从 angular 8 升级到 angular 9.1 时出现此错误。
升级到 moment 2.25.1 解决了问题 #5486(“TS2307:找不到模块 'moment'。”),但区域设置错误仍然存在。
对于那些使用命令“yarn create react-app
moment$: 'moment/moment.js'
将上述行插入别名块的第 311 行。
alias: {
// Support React Native Web
// https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
'react-native': 'react-native-web',
// Allows for better profiling with ReactDevTools
...(isEnvProductionProfile && { 'react-dom$': 'react-dom/profiling',
'scheduler/tracing': 'scheduler/tracing-profiling', }),
...(modules.webpackAliases || {}),
moment$: 'moment/moment.js'
},
解决这个问题的另一种方法是用 Day.js 替换 moment.js。 按照此 url 中的说明使用 react-app-rewired >> https://ant.design/docs/react/use-with-create-react-app。 根据说明修改package.json。 然后在根文件夹中创建一个 config-overrides.js,如下所示。 根据此https://github.com/ant-design/antd-dayjs-webpack-plugin,这具有将js从231.11kb缩小到11.11kb的好处
const { override, addWebpackPlugin } = require('customize-cra');
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin');
module.exports = override(
addWebpackPlugin(new AntdDayjsWebpackPlugin())
);
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
很棒的修复!!!
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
为我工作
看起来问题的根源是由package.json
的"module"
字段引起的(https://github.com/moment/moment/commit/9ce89e7fea881b39be23b8c0646f7ef7817985d9)
是的,从package.json
删除"module": "./src/moment.js",
package.json
使我的警告消失了。 顺便说一句,我的是React
应用程序 -- create-react-app
而我正在使用"moment": "^2.25.1"
。 即使我使用的是最新版本,我仍然收到此错误,但更新package.json
似乎可以解决此问题。 谢谢@ApacheEx
我已经修复了这个错误,至少对我来说是这样。
我去了 node_modules/moment/src/lib/locale/
修改 locales.js 文件,ctrl+f 并搜索'./locale'+name
行。
将其更改为'./'+name
。
我不知道为什么指向相同的文件夹和 '/.locale' + 名称,这就是为什么错误说无法解析 ./locale
老实说,如果将来出现错误,我复制了原始行并在上面进行了评论。
如果有帮助,请点赞。 这种错误更糟糕......
遇到同样的问题,恢复到 2.24,直到有可用的修复程序。 我无法编辑模块文件,因为我是在自动服务器上构建的,所以等待正式发布。
我对 2.24 和 2.25.1 版本有同样的问题WARNING in ./node_modules/moment/src/lib/locale/locales.js
当我打开浏览器控制台时,我看到此错误:
TypeError: Cannot read property 'defineLocale' of undefined at locales.min.js:1
我们在 2.22 时刻遇到了同样的问题
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;
这条线应该放在哪里?
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;这条线应该放在哪里?
在您想要在 ecmascript 上使用 momentjs 的文件中,如下所示:
import moment from 'moment/moment';
(() => {
const now = moment(moment.now());
console.log(now);
})
2.25.3 应该解决这个问题。
如果您仍然遇到挑战,请打开另一个问题。
或者,您可以尝试Stack Overflow了解更多个人问题。
这个带有 WebPack 配置的别名为我解决了一个问题:
resolve: {
extensions: ['.js', '.ts'],
alias: {
'./locale': 'moment/locale'
}
}
如果您使用的是时刻时区:
https://github.com/moment/moment-timezone/issues/837
我用这个解决了这个问题:
import moment from 'moment';
import 'moment/locale/pt-br';
它有效,并且语言环境设置为“pt-br”,所有其他语言也有效。
最有用的评论
只需像下面这样导入就可以了:
从“时刻/时刻”导入时刻;