Javascript 未定义外部库变量
我正在尝试将javascript库(WaveSurfer)包含到我的Angular应用程序中(使用Mean.io)。 问题是每次运行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
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*/
,警告消失了。再次感谢你!这是一个很好的回答。