<p>具有语言环境的时刻:找不到“ ./locale”</p>

创建于 2016-02-22  ·  48评论  ·  资料来源: moment/moment

使用webpack时出现此警告:

WARNING in ./~/moment/min/moment-with-locales.js
Module not found: Error: Cannot resolve 'file' or 'directory' ./locale in \node_modules\moment\min
@ ./~/moment/min/moment-with-locales.js 271:16-43

有什么线索吗?

Discussion Documentation Help Wanted

最有用的评论

我使用了ignore模块,效果很好。 这可能会帮助某人:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

所有48条评论

参见#1435。 解决方法在最后。 谢谢。

webpack.config.js的“插件”中建议的解决方法

new webpack.ContextReplacementPlugin(/moment[\\\/]locale$/, /^\.\/(en|de|cz|eu)$/)

不工作

上面提到的问题与min / moment-with-locales.js文件中包含的require('./locale' + name)语句有关。 不再需要,因为此文件本身已包含所有语言环境。

不幸的是,webpack尝试解决所有require语句-因此出现此警告。

@ichernev-我不使用webpack,但是@mheimschild提出的观点似乎很合理。 虽然不确定如何处理。

最简单的解决方案是如何迫使Webpack不要查找时刻包含在local-with-locales.js中的语言环境,而是迫使他加载其他内容。 这对我有用:

安装空模块(其文学内容不包含任何内容)
npm install --save-dev empty-module
然后如下配置ContextReplacementPlugin
new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/)

希望这会有所帮助。

感谢您提供解决方法@ mheimschild-即使将空模块自动作为开发依赖项包含在Webpack 2中,也可以在Webpack 2中解决此问题,这真是太好了。

似乎不需要使用empty-module ,只需将其更改为null,它仍然可以在ContextReplacementPlugin中使用

new webpack.ContextReplacementPlugin(/\.\/locale$/, null, false, /js$/)

通过npm使用momentjs时遇到了类似的问题
我发现在locales.js它是指./locale/
我假设那条线试图找到语言本地化。 II

同时,区域设置文件位于../../locale/locale.js
通过将该行更改为require ('../../locale/' + name);我解决了问题,但无法在服务器上像这样直接编辑node_modules

稍后将尝试上述的webpack方式

编辑:我在Windows上运行它,它看起来像路径问题。 我尝试在Linux上运行片刻,但效果很好

我使用了ignore模块,效果很好。 这可能会帮助某人:

    // /app/js/webpack.config.js
    plugins: [

        // Fixes warning in moment-with-locales.min.js 
        //   Module not found: Error: Can't resolve './locale' in ...
        new webpack.IgnorePlugin(/\.\/locale$/)
    ]

@miguelrincon工作正常!

太棒了有用!

@miguelrincon或类似的东西-我们可以在文档上获取拉请求吗? 它将在webpack下的use部分中。

如何在没有webpack.config文件的带有Angular 4的Hybrid Apps Ionic 3.5中修复?

我在上面尝试了@miguelrincon建议,但是它不起作用。
即,在构建期间它不会引发错误,但是在浏览器控制台日志中会引发相同的错误。

环顾四周后,我发现和它完美的作品!

https://github.com/afc163/react-boilerplate/commit/61ec8a19df0fcb56d407b795cb6c87141e0e14a7

\\ webpack.js

resolve: {
   ....
   alias: {
      moment$: 'moment/moment.js',
   },
   ...
}

这个问题在moment.js 2.19.0中对我来说已经出现。 如果需要立即使应用程序正常运行,则应执行回滚。 例如:

npm install [email protected]保存

谢谢@ jeff3dx这解决了我的问题!

@ jeff3dx我在最新版本中发生的情况完全相同,但是按照@ M1chaelTran的建议添加resolve别名仍然可以解决问题。

我确认坚持2.18可立即解决此问题。

同样在这里。 使用React 16,安装时刻为2.19,并出现错误。 恢复为2.18,没有错误。

亲爱的,我解决了!
第61行中的src / lib / locale / locales.js,
61 require('./ locale /'+ name);
更改为:
61 require('./'+ name);
将解决“带有区域设置的时刻:“ ./ locale”未找到”。

@ wushuang5112您无法编辑node_module,因此您的解决方案将需要在存储库中添加一些内容,这不好

在还使用react和webpack的应用程序中升级到时刻2.19时,我们也遇到了问题。 恢复到2.18修复了它。

我将使用@ M1chaelTran的解决方案,而不是仅回滚,该解决方案在webpack配置中为momentjs使用别名。 像魅力一样工作,让我可以继续使用最新的信息。

解决了! ... v2.19.1

@ M1chaelTran男人,你真幸福,非常感谢!!!

我仍然在v2.19.1中看到问题

WARNING in ./~/moment/src/lib/locale/locales.js
Module not found: Error: Can't resolve './locale' in '/project/node_modules/moment/src/lib/locale'
 @ ./~/moment/src/lib/locale/locales.js 56:12-46
 @ ./~/moment/src/lib/locale/locale.js
 @ ./~/moment/src/moment.js
 @ dll reactBoilerplateDeps

但是, @ M1chaelTran别名技巧确实对我

@electrobabe我认为问题是...该文档已经过时了。 所以...

要解决此问题: Can't resolve './locale' in ,请尝试导入momentmin/locales而不是moment-with-locales 。 它固定在我身上!

更好的参考是:
http://momentjs.com/docs/#/i18n/loading -into-browser /

降级到2.18并不能解决我的问题。 仍然有此错误:错误:找不到模块“ ./locale”

奇怪的是要解决此问题:

  • 在我的react-native项目中,我必须导入moment-with-locales文件
  • 在我的reactjs项目中,我只需要导入moment/locales文件

@manelephant我认为这可以解决问题: https :

降级到2.18并不能解决我的问题。

我用角cli。
的时候工作,但当我想导出我的组件与npm运行packagr ==>

编译为FESM15
“ node_modulesmoment \ srcmoment.js”未导出“语言环境”

构建错误
无法调用名称空间(“瞬间”)
错误:无法调用名称空间(“瞬间”)

有人可以帮助我吗?

在该线程中似乎有很多有用的建议。 我们很乐意为我们的文档准备一些PR! https://github.com/moment/momentjs.com

感谢您提供所有信息。

更新:我找到了解决方案。

正确的导入方式:

import * as moment_ from 'moment'; const moment = moment_;

并在ng-package.json中:

{ "lib": { "externals": { "moment": "moment" } } }

对我来说,结构是错误的,外部结构不在lib内部,所以packgr在寻找lib.externals,并且找不到时间。

伍克包装和时刻

我正在使用最新版本,现在是2.22.2。

当我尝试使用ng-packagr打包我的项目时,出现此错误。 与:@vZanchiV

“ node_modulesmoment \ srcmoment.js”未导出“语言环境”

构建错误
无法调用名称空间(“瞬间”)
错误:无法调用名称空间(“瞬间”)

在项目中,它是以这种方式的进口商:

从“时刻”开始输入*;

我发现一种解决方法进行得不太顺利,我尝试将其导入如下:

从* moment导入*作为一刻;

使用此方法后,我可以使用ng-packagr导出我的项目,但是随后我将我的项目导入另一个项目失败,出现了这个问题

找不到模块:错误:无法在'C:\ development \ angularTest \ angulartestnode_modules \ modulename中解析'./locale'

为了确认@ francisrod01的解决方案,我已更改了导入,因此,

import moment from 'moment/min/moment-with-locales'

我改为

import moment from 'moment'
import 'moment/min/locales'

这为我解决了。 希望能帮助到你。

我发现@ M1chaelTran在上面发布的别名解决方案可以正常工作。 万一使用Laravel Mix的人想知道如何应用它,您的webpack.mix.js应该看起来像这样:

let mix = require('laravel-mix');

mix.webpackConfig({
    resolve: {
        alias: {
            moment$: 'moment/moment.js'
        }
    }
});

尝试上述所有解决方案,只能解决“降级版本”。但是我的某些模块(如“ antd”)需要2.19.0。 所以我不能降级

        new webpack.ContextReplacementPlugin(/^\.\/locale$/, (context) => {
            if (!/\/moment\//.test(context.context)) return;

            Object.assign(context, {
                regExp: /^\.\/\w+/,
                request: '../../locale', // resolved relatively
            });
        }),

这个解决方案对我有用。

似乎与#4216(和#3872要引导)相同。

最好参考#4216,因为该历史记录最多

@aaronkrohn谢谢,此解决方案适用于react-boilerplate v.4

尝试先加载语言环境,而不是moment.min.js。

“片刻”:[
“ ../node_modules/moment/locale/en-au.js”,
“ ../node_modules/moment/min/moment.min.js”
]

这将解决我的问题。

我有片刻2.24.0 ,这终于对我有用:

    // Fixes warning in moment-with-locales.min.js
    //   Module not found: Error: Can't resolve './locale' in ..
    new webpack.ContextReplacementPlugin(/^\.\/locale$/, context => {
      if (!/\/moment\//.test(context.context)) return

      Object.assign(context, {
        regExp: /^\.\/\w+/,
        request: '../locale', // resolved relatively
      })
    })

几乎与@aaronkrohn的修复相同,但是我不得不使用request: '../locale',来代替request: '../../locale', request: '../locale',

这是此问题的解决方法:

文件:“ moment \ src \ liblocalelocales.js”第56行:
“ ./locale”需要更改为“ ../../locale”

亚历山德拉

解决方法很简单...

找到这样的事情:

import moment from 'moment/src/moment';

并替换成这个

import * as moment from 'moment';

使用create-react-app ,下面的导入对我来说很好

import * as moment from "moment/moment.js"

使用create-react-app ,下面的导入对我来说很好

import * as moment from "moment/moment.js"

@mssui的解决方案对我

 "resolutions": {
    "moment": "2.24.0"
  }

将以上内容添加到package.json并重新进行yarn。 对我没问题

webpack.config.js

请在哪里可以找到此文件,找不到您引用的路径,谢谢,

我通过从较旧的项目中复制“时刻”源文件夹来进行变通,并且对我有用

参见https://momentjs.com/docs/#/ -project-status /

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