Moment js undefined Laravel

问题描述 投票:0回答:1

我正在尝试在我的laravel项目中使用moment.js,而不是使用vue,但仍然通过npm导入包。

我的app.js文件:

require('moment/moment.js');
require('./bootstrap');
require('bootstrap-select');

在我的webpack.pix.js文件中如下所示:

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

mix.setResourceRoot('laravel/public');

mix.js('resources/js/app.js', 'public/js')
     .combine([
          'resources/theme/dist/js/app.js',
          'resources/theme/dist/js/app.init.js',
          'resources/theme/dist/js/sidebarmenu.js',
          'resources/theme/dist/js/waves.js',
          'resources/theme/assets/libs/perfect-scrollbar/dist/perfect-scrollbar.jquery.min.js',    
          'resources/theme/assets/extra-libs/sparkline/sparkline.js',  
          'resources/theme/dist/js/custom.js',
          'resources/js/custom.js'
     ], 'public/js/nice-admin.js')
     .copyDirectory('resources/theme/assets/images/', 'public/assets/images')
     .copyDirectory('resources/theme/dist/css/icons/material-design-iconic-font/fonts', 'public/fonts')
     .copy('node_modules/bootstrap-daterangepicker/daterangepicker.css', 'public/css/daterangepicker.css')
     .copy('node_modules/bootstrap-select/dist/css/bootstrap-select.min.css', 'public/css/bootstrap-select.min.css')
     .sass('resources/sass/app.scss', 'public/css', {
           implementation: require('node-sass')
}).options({processCssUrls: false})

然后在我的custom.js文件中,我刚刚得到了这个:

$(function() {
    "use strict";

    let date = moment().format();
    console.log(date);
});

我收到以下错误:

app.js:13202 Uncaught ReferenceError: moment is not defined
    at HTMLDocument.<anonymous> (nice-admin.js:2144)
    at mightThrow (app.js:12909)
    at process (app.js:12977)

我已经验证了那个时刻是在我编译的app.js文件中。那么为什么我的custom.js文件看不到它,我需要做些什么来解决它呢?

javascript laravel npm laravel-mix
1个回答
2
投票

在那一刻你没有将moment分配给任何东西。根据docs,您应该将其分配给要使用的变量:

var moment = require('moment'); 。力矩()格式();

但是,如果要在app.js文件的范围之外使用它,则无法使用。一种方法是将它添加到window对象:

window.moment = require('moment');
© www.soinside.com 2019 - 2024. All rights reserved.