使用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
有什么线索吗?
参见#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
,请尝试导入moment
和min/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 /
最有用的评论
我使用了ignore模块,效果很好。 这可能会帮助某人: