Laravel 构建JavaScript时缺少模块

Laravel 构建JavaScript时缺少模块,laravel,datetime,bootstrap-4,momentjs,tempus-dominus-datetimepicker,Laravel,Datetime,Bootstrap 4,Momentjs,Tempus Dominus Datetimepicker,我正在Laravel中构建一个内部工具,我需要一个datetime选择器作为接口的一部分。我的研究表明,Tempus Dominus是大多数人用来解决这个问题的解决方案 我已经安装了Tempus Dominus和Moment(通过节点),并将它们都添加到我的app.js文件中。但是,当我尝试编译JS时,我得到以下警告: WARNING in ./node_modules/moment/min/moment.min.js Module not found: Error: Can't resolve

我正在Laravel中构建一个内部工具,我需要一个datetime选择器作为接口的一部分。我的研究表明,Tempus Dominus是大多数人用来解决这个问题的解决方案

我已经安装了Tempus Dominus和Moment(通过节点),并将它们都添加到我的
app.js
文件中。但是,当我尝试编译JS时,我得到以下警告:

WARNING in ./node_modules/moment/min/moment.min.js
Module not found: Error: Can't resolve './locale' in 'C:\inetpub\wwwroot\salesdb\node_modules\moment\min'
 @ ./node_modules/moment/min/moment.min.js
 @ ./resources/js/app.js
 @ multi ./resources/js/app.js ./resources/sass/app.scss
这就是我在
app.js
文件中导入它们的方式:

require('moment/min/moment.min.js');
require( 'tempusdominus-bootstrap-4/build/js/tempusdominus-bootstrap-4.js');

我遗漏了什么?

官方的Tempus Dominus引导插件没有维护,在ES6和模块绑定器方面有点问题

我强烈建议您安装这两个货叉:

如果您想让它工作,您应该在应用程序的最终构建中注入/提供
moment
jquery
导入(第1个选项),或者使它们全局可用(第2个选项)

第一选项 您的模块绑定器是什么

例如,如果您正在使用,您可以使用汇总的插件如下配置构建:

//您导入的插件。。。
从“@rollup/plugin-inject”导入注入;
导出默认值{
输入:“src/index.js”,
输出:[
//你输出。。。
],
插件:[
注入({
$:“jquery”,
jQuery:“jQuery”,
时刻:“时刻”,
排除:“src/**”,
}),
//您的其他汇总插件在此。。。
],
};
对于Webpack,您需要使用:

const webpack=require('webpack');
module.exports={
条目:'./index.js',
输出:{
文件名:'[name].js'
},
插件:[
新的webpack.ProvidePlugin({
$:“jquery”,
jQuery:'jQuery'
时刻:“时刻”
})
]
};
第二种选择 另一个选项是通过向
index.js
主入口点文件添加以下行,使
moment
jQuery
在应用程序中全局可用:

从“时刻”导入时刻;
从“jquery”导入$;
window.$=window.jQuery=$;
window.moment=力矩;
//您的其他导入(tempusdominus引导程序也是)在这里。。。
虽然我没有测试,但这两个选项都应该有效(如果没有,请告诉我)。 当然,首选的方法是使用模块绑定器(第一个选项),而不是将
jQuery
和/或
moment
公开到
窗口

如果您正在使用React,我建议您改用这个库(演示)。但这是另一个故事。

根据,这应该是可行的:
var-moment=require('moment')
npm i tempusdominus tempusdominus-bootstrap