模块在使用browserify捆绑时在控制台中显示未定义

时间:2017-11-20 19:11:55

标签: javascript jquery browserify

在将项目转移到它之前,我是浏览器并尝试理解它的新手。

我浏览了文档,并了解了如何使用它,我试图包含一些更多的依赖项,但在使用时,它们被声明没有定义!

以下是我的文件:

main.js

window.jQuery = $ = require("jquery");
require('bootstrap');
require("jquery-confirm");
require("html2canvas");

的package.json

{
  "dependencies": {
    "bootstrap": "^3.3.7",
    "html2canvas": "^0.5.0-beta4",
    "jquery": "^3.2.1",
    "jquery-confirm": "^3.3.2",
    "jshint": "^2.9.5",
    "qrcodejs": "^1.0.0"
  }
}

当我尝试通过浏览器控制台访问这些时,Html2canvas,jshint和qrcode都显示为未定义,但jquery-confirm似乎工作正常。

让我知道我错在哪里。

-Thanks

1 个答案:

答案 0 :(得分:3)

那是因为您将它们作为模块加载。能够使用诸如Browserify之类的捆绑系统的全部意义在于,您不会 拥有全局变量。

如果你检查其中一个回复电话的返回值,你就会看到。

示例:

var html2canvas= require('html2canvas');
console.log(html2canvas);

如果您希望将它们设为全局(并且您应该提醒您不要这样做),那么您可以将它们附加到window对象。

window.html2canvas = require('html2canvas');

但我完全想建议你除非必须,否则不要把事情做全球化。例如,您可以在开头使用jQuery在任何文件中使用:

var $ = require('jquery');