Я пытаюсь потребовать библиотеку Chart.js с помощью Browserify (tbh это среда разработки с gulp, browserify и некоторыми другими вещами, которые я едва знаю, как они работают вместе):
'use strict';
var angular = require('angular');
require('angular-ui-router');
require('./templates');
require('./controllers/_index');
require('./services/_index');
require('./directives/_index');
window.gauge = require('./vendors/gauge');
//this is what i'm trying to require
window.chartjs = require('./vendors/chart');
angular.element(document).ready(function() {
var requires = [
'ui.router',
'templates',
'app.controllers',
'app.services',
'app.directives'
];
window.app = angular.module('app', requires);
angular.module('app').constant('AppSettings', require('./constants'));
angular.module('app').config(require('./routes'));
angular.module('app').config(require('./PostFix'));
angular.module('app').run(require('./on_run'));
angular.bootstrap(document, ['app']);
});
Tbh, он хорошо работал с window.gauge = require('./vendors/gauge');
, но когда мне требуется vendors/chart.js
, он выдает эту ошибку:
undefined // chart.js:4
Uncaught TypeError: Cannot read property 'Chart' of undefined // chart.js:4
А вот эти строки в файле chart.js:
(function(){
"use strict";
console.log(this); <------ outputs the "undefined"
var root = this,
previous = root.Chart; <----- fails, as "root" doesn't exist
Это странно, потому что, когда я добавляю chart.js
с помощью <script></script>
, этот console.log(this) выводит объект/область окна, но при выполнении из браузера он не определен, поэтому chart.js
терпит неудачу.
Я новичок в browserify/node/gulp, но я пробовал разные вещи, такие как:
- Browserify-shim -> та же ошибка
- Запрашивать сценарий разными способами, например, пытаться потребовать его внутри объекта
{ }
, пытаться сделатьvar whatever = new require('./vendors/chart')
, но с треском провалиться, как обезглавленный цыпленок, пытающийся пойти в туалет.
Я предполагаю, что каким-то образом мне нужно прикрепить этот скрипт к объекту или чему-то еще, чтобы this
не было неопределенным при выполнении, но я не могу найти способ.