Moment: 在 moment/src/lib/locale/locales.js 中找不到“./locale”路径

创建于 2018-03-19  ·  54评论  ·  资料来源: moment/moment

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/吗?

Troubleshooting

最有用的评论

只需像下面这样导入就可以了:

从“时刻/时刻”导入时刻;

所有54条评论

当我使用 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") } }

以上对我不起作用,但按照本教程帮助我解决了这个问题。

https://alligator.io/angular/custom-webpack-config/

这有什么新的吗? 我正在使用 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.24.0",
  • "时刻时区": "^0.5.28",

第 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 作为依赖项。

谢谢你!

它帮助我在dependenciesresolutions内更改为固定版本2.24.0 resolutions 。 我在我的代码中使用该包,并将其作为reactantd的依赖项。

如果您有多个工作区,请不要忘记更改所有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",修复方法是编辑 node_modules/react-scripts/config/webpack.config.js 以添加如下别名。

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)

这是修复它的 PR https://github.com/moment/moment/pull/5503

是的,从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”,所有其他语言也有效。

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

相关问题

chitgoks picture chitgoks  ·  3评论

Shoroh picture Shoroh  ·  3评论

RobinvanderVliet picture RobinvanderVliet  ·  3评论

ghost picture ghost  ·  3评论

danieljsinclair picture danieljsinclair  ·  3评论