javascript - 如何解决 "module is not defined"错误?

标签 javascript angularjs kendo-ui gulp

我正在尝试在我的 Angular(1.x) 项目中使用 KendoUI datetimepicker。当我直接在我的index.html页面中引用KendoUI js文件时,它工作得很好。但是当我尝试通过 gulp 添加对它的引用时,它不断抛出以下错误:

Uncaught ReferenceError :模块未在 kendo.ui.core.js:1 处定义

在我的 package.json 中,我有

"kendo-ui-core": "2017.2.621"

这就是我的 gulp 文件中的内容:

/// <reference path="node_modules/moment/moment.js" />
/// <reference path="node_modules/moment/src/moment.js" />
/// <binding BeforeBuild='clean' AfterBuild='build' Clean='clean' />
var gulp = require("gulp"),
    rimraf = require("rimraf"),
    less = require('gulp-less'),
    cssmin = require('gulp-cssmin'),
    concat = require("gulp-concat-sourcemap"),
    rename = require('gulp-rename'),
    jshint = require('gulp-jshint'),
    ignore = require('gulp-ignore'),
    cacheBuster = require('gulp-cache-bust'),
    templateCache = require('gulp-angular-templatecache');

var paths = {
    webroot: "./build/",
    approot: "./app/"
};

paths.fonts = "./fonts/**/*";
paths.less = "./less/**/*.less";
paths.images = "./images/**/*";
paths.js = paths.approot + "**/*.js";
paths.specs = paths.approot + "**/*.spec.js";
paths.views = paths.approot + "**/*.html";

gulp.task("clean", function (cb) {
    rimraf(paths.webroot, cb);
});

gulp.task('jshint', function () {
    return gulp.src(paths.js)
        .pipe(ignore.exclude('*.spec.js'))
        .pipe(jshint('jshint.config.json'))
        .pipe(jshint.reporter('gulp-jshint-file-reporter', {
            filename: __dirname + '/jshint-output.log'
        }));
       //.pipe(jshint.reporter("fail")); // Throw error and fail build
});

gulp.task("build:js",  function () {
    return gulp.src([
        paths.approot + "**/*.module.js",
        paths.approot + "**/*.config.js",
        paths.js,
        "!" + paths.specs
    ])
    .pipe(concat('app.js', { sourcesContent: true }))
    .pipe(gulp.dest(paths.webroot + "app/"));
});

gulp.task("build:views", function () {
    return gulp.src([paths.views])
        .pipe(templateCache({ root: "app", module: "goalEnvision" }))
        .pipe(gulp.dest(paths.webroot + "app/"));
});

gulp.task("build:fonts", function () {
    return gulp.src([
        paths.fonts,
        'node_modules/bootstrap/dist/fonts/*',
        'node_modules/bootstrap-less/fonts/*'
    ])
        .pipe(gulp.dest(paths.webroot + "fonts/"));
});

gulp.task("build:less", function () {
    return gulp.src(["./less/**/app.less"])      //compile app + theme less files
        .pipe(less({
            paths: [
                '.',
                'node_modules/angucomplete-alt/angucomplete-alt.css'

                //'./node_modules/bootstrap-less',                
            ]
        }))
        .pipe(gulp.dest(paths.webroot + "css/"));
});

gulp.task("build:images", function () {
    return gulp.src([paths.images])
        .pipe(gulp.dest(paths.webroot + "images/"));
});

gulp.task("build:index.html", function () {
    return gulp.src("index.html")
        .pipe(gulp.dest(paths.webroot));
});

gulp.task("build:favicon.ico", function () {
    return gulp.src("favicon.ico")
        .pipe(gulp.dest(paths.webroot));
});

gulp.task("build:cache-bust", ["build:index.html", "build:js", "build:less", "build:libs.js", "build:libs.css"], function () {
    return gulp.src(paths.webroot + "index.html")
        .pipe(cacheBuster())
        .pipe(gulp.dest(paths.webroot));
});

gulp.task('build:libs.js', function () {
    gulp.src([
        'node_modules/jquery/dist/jquery.min.js',
        'node_modules/angular/angular.min.js',
        'node_modules/angular-dynamic-locale/dist/tmhDynamicLocale.min.js',
        'node_modules/angular-xeditable/dist/js/xeditable.min.js',
        'node_modules/angular-file-upload/dist/angular-file-upload.min.js',
        'node_modules/angular-loading-bar/build/loading-bar.min.js',
        'node_modules/ng-img-crop/compile/minified/ng-img-crop.js',
        'node_modules/angular-ui-router/release/angular-ui-router.min.js',
        'node_modules/angular-local-storage/dist/angular-local-storage.min.js',
        'node_modules/highcharts/highcharts.js',
        'node_modules/highcharts-ng/dist/highcharts-ng.min.js',
        'node_modules/angular-ui-bootstrap/dist/ui-bootstrap.js',
        'node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js',
        'node_modules/angular-translate/dist/angular-translate.min.js',
        'node_modules/angular-animate/angular-animate.min.js',
        'node_modules/angular-toastr/dist/angular-toastr.min.js',
        'node_modules/angular-toastr/dist/angular-toastr.tpls.min.js',
        'node_modules/jquery-ui-dist/jquery-ui.min.js',
        'node_modules/angular-ui-sortable/dist/sortable.min.js',
        'node_modules/angular-touch/angular-touch.js',
        'node_modules/sweetalert/dist/sweetalert.min.js',
        'node_modules/angular-sweetalert/SweetAlert.min.js',
        'node_modules/moment/min/moment.min.js',
        'node_modules/angular-bootstrap-datetimepicker/src/js/datetimepicker.js',
        'node_modules/angular-bootstrap-datetimepicker/src/js/datetimepicker.templates.js',
        'node_modules/bootstrap-toggle/js/bootstrap-toggle.min.js',
        //inkluderas i common/components/guide behövde ändra i källkoden för att disabla automatisk scrolling
        //'node_modules/angular-tour/dist/angular-tour-tpls.js',
        'node_modules/angular-moment/angular-moment.min.js',
        'node_modules/angular-sanitize/angular-sanitize.js',
        'node_modules/angular-bootstrap-confirm/dist/angular-bootstrap-confirm.js',
        'node_modules/angular-hotkeys/build/hotkeys.min.js',
        'node_modules/angucomplete-alt/dist/angucomplete-alt.min.js',
        'node_modules/angular-sticky-plugin/dist/angular-sticky.min.js',

        'node_modules/kendo-ui-core/js/kendo.ui.core.js',

        //Tried with different permutation/combination of these files as well
        //'node_modules/kendo-ui-core/js/kendo.core.js',
        //'node_modules/kendo-ui-core/js/kendo.popup.js',
        //'node_modules/kendo-ui-core/js/kendo.calendar.js',
        //'node_modules/kendo-ui-core/js/kendo.datepicker.js',
        //'node_modules/kendo-ui-core/js/kendo.timepicker.js',
        //'node_modules/kendo-ui-core/js/kendo.datetimepicker.js',
        //'node_modules/kendo-ui-core/js/kendo.angular.js',

    ])
    .pipe(concat('libs.js', { sourcesContent: true }))
    .pipe(gulp.dest(paths.webroot + "/libs"));

});

gulp.task('build:libs.css', function () {
    gulp.src([
        'node_modules/angular-toastr/dist/angular-toastr.css',
        'node_modules/sweetalert/dist/sweetalert.css',
        'node_modules/angular-bootstrap-datetimepicker/src/css/datetimepicker.css',
        'node_modules/angular-xeditable/dist/css/xeditable.css',
        'node_modules/ng-img-crop/compile/minified/ng-img-crop.css',
        'node_modules/angular-loading-bar/build/loading-bar.css',
        'node_modules/bootstrap-toggle/css/bootstrap-toggle.css',
        'node_modules/angular-tour/dist/angular-tour.css'

    ])
    .pipe(concat('libs.css', { sourcesContent: true }))
    .pipe(gulp.dest(paths.webroot + "/libs"));
});

gulp.task("build:webconfig", function () {
    return gulp.src("Web.config")
        .pipe(gulp.dest(paths.webroot));
});

gulp.task("build", ["jshint", "build:js", "build:less", "build:fonts", "build:images", "build:libs.js", "build:libs.css", "build:views", "build:index.html", "build:favicon.ico", "build:cache-bust", "build:webconfig"]);

gulp.task('watchAndBuild', function () {
    gulp.watch(paths.js, ['build']);
    gulp.watch(paths.views, ['build']);
});

抛出错误的确切行与

enter image description here

我认为我没有以正确的方式包含 kendoui 文件。我需要进行哪些更改才能使其正常工作?

最佳答案

我能够解决此错误的唯一方法是在 index.html 中包含对 kendo ui js 文件的直接引用。希望对其他人有帮助。

关于javascript - 如何解决 "module is not defined"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45911451/

相关文章:

Javascript: "Share button"在两个评论框 (jsfiddle) 上打开和关闭?

javascript - Angular Material 日期选择器大小

kendo-ui - 带有两个表的剑道 ui 网格 - 标题和数据

javascript - 当 Kendo 网格为空时在其内显示一条消息

kendo-ui - Kendo UI Grid 未调用 READ 方法

javascript - FormData.append ("key", "value") 不工作

Javascript/jQuery - 鼠标事件不会在动态添加的 html 上触发

javascript - 在 Angularjs 中访问对象

angularjs - 我可以将 100% SEO 应用于 angularjs 还是在服务器端生成页面更有效?

javascript - 在 javascript 中,如何从对象数组中删除一个元素?