【问题标题】:Error while requiring external library with browserify (this = undefined)使用 browserify 需要外部库时出错(this = undefined)
【发布时间】:2015-11-24 01:51:07
【问题描述】:

我正在尝试将库 Chart.js 与 Browserify 一起使用(它是具有 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

这很奇怪,因为当我使用&lt;script&gt;&lt;/script&gt; 添加chart.js 时,console.log(this) 输出窗口对象/范围,但是当从 browserify 执行时,它是未定义的,这就是 chart.js 失败的原因。

我是 browserify/node/gulp 的新手,但我尝试了不同的东西,例如:

  • Browserify-shim -> 同样的错误
  • 以不同的方式请求脚本,例如尝试在对象 { } 中请求它,尝试执行 var whatever = new require('./vendors/chart') 但惨遭失败,就像试图去洗手间的被斩首的鸡一样。

我猜想我必须以某种方式将该脚本附加到一个对象或其他东西上,因此this 在执行时不会未定义,但我找不到方法。

【问题讨论】:

    标签: javascript node.js requirejs gulp browserify


    【解决方案1】:

    我已经解决了。问题是一个名为 Babelify 的 browserify 转换。我仍然不知道 Babel 为什么要这样做,但无论如何我都不需要它,所以我只是禁用了它,仅此而已。把它贴在这里以防万一发生在其他人身上。

    【讨论】:

    • 感谢@FelixKling!我希望我以前能跑过那个,我疯了,换了各种各样的东西!
    • 嘿@FelixKling,有更新的页面吗?您链接的那个似乎不再存在。谢谢!
    • @AndyPerlitch:不,但您可以在这里查看旧页面:github.com/babel/babel.github.io/blob/5.0.0/docs/…
    猜你喜欢
    • 2014-10-24
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2014-09-25
    • 1970-01-01
    • 2014-12-02
    相关资源
    最近更新 更多