Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义外部库变量_Javascript_Angularjs_Gruntjs_Mean Stack - Fatal编程技术网

Javascript 未定义外部库变量

Javascript 未定义外部库变量,javascript,angularjs,gruntjs,mean-stack,Javascript,Angularjs,Gruntjs,Mean Stack,我正在尝试将javascript库(WaveSurfer)包含到我的Angular应用程序中(使用Mean.io)。 问题是每次运行grunt,控制台中都会出现警告: 在packages\tracks\public\services\tracks.js中: 未定义“WaveSurfer”。 以下是我的不同文件的代码: public/controllers/tracks.js angular.module('mean').controller('PlayerController', ['$scop

我正在尝试将javascript库(WaveSurfer)包含到我的Angular应用程序中(使用Mean.io)。 问题是每次运行
grunt
,控制台中都会出现警告:

在packages\tracks\public\services\tracks.js中: 未定义“WaveSurfer”。

以下是我的不同文件的代码:

public/controllers/tracks.js

angular.module('mean').controller('PlayerController', ['$scope', 'Global', 'Tracks','myWaveSurfer',
function($scope, Global,Tracks, myWaveSurfer) {
    $scope.global = Global;

    //Player WaveSurfer
    var wavesurfer = Object.create(myWaveSurfer);
    wavesurfer.load('music.mp3');
angular.module('mean.tracks').factory('myWaveSurfer', function() {
    return WaveSurfer; /*Warning here*/
});
public/services/tracks.js

angular.module('mean').controller('PlayerController', ['$scope', 'Global', 'Tracks','myWaveSurfer',
function($scope, Global,Tracks, myWaveSurfer) {
    $scope.global = Global;

    //Player WaveSurfer
    var wavesurfer = Object.create(myWaveSurfer);
    wavesurfer.load('music.mp3');
angular.module('mean.tracks').factory('myWaveSurfer', function() {
    return WaveSurfer; /*Warning here*/
});
wavesurfer.min.js的内容如下所示:

var WaveSurfer = {
   defaultParams: {...}
   init: function(params) {...}
   ...
}
我将库正确地包含在
config/assets.json
中,因此可以加载库。 我可以在Chrome控制台上看到它:

<script type="text/javascript" src="/bower_components/wavesurfer.js/build/wavesurfer.min.js"></script>

它只适用于
grunt--force
,但是有没有一种解决方案可以在没有警告的情况下正确地包含这个库


提前谢谢

我假设您在节点环境中

将此添加到您的全局列表:

GLOBAL.WaveSurfer = {};
或者您可以使用
require

GLOBAL.WaveSurfer = require('...');

如果
require
请确保库
module.exports
全局对象。

从粘贴的内容很难判断,但这是来自jshint/jslint的错误吗?在这种情况下,您应该能够在Grunfile中将WaveSurfer声明为全局用户。谢谢@ivarni!我刚刚在我的services/tracks.js顶部添加了
/*global WaveSurfer:true*/
,警告消失了。再次感谢你!这是一个很好的回答。