2017-05-02 24 views
0

我有以下代码,我浏览到bundle.js,我包括(在加载任何其他.js文件之前)在我的前端。我browserify该文件只是这本:Browserify不起作用 - 为什么?

var firebase = require('firebase') 

我然后调用授权()这一变量,在被包括在前端的下一个文件,但我得到一个错误说火力点没有定义?

+0

您曾使用过Browserify吗? :) – Badacadabra

+0

没有大声笑我只是想获得一些东西的工作 – huzal12

+0

你想要一些解释? – Badacadabra

回答

0

Browserify是一个模块捆绑,使您可以使用CommonJS的(节点)模块在浏览器中。这意味着您的项目必须遵循CommonJS惯例导出(exportsmodule.exports)和导入(require)模块。这是一个基本的例子:

你的模块(module.js

var foo = function() { 
    console.log('Foo'); 
}; 

var bar = function() { 
    console.log('Bar'); 
}; 

module.exports = { 
    foo: foo, 
    bar: bar 
}; 

你的入口点(main.js

var module = require('./module'); 

module.foo(); // Foo 
module.bar(); // Bar 

此代码将使用Node开箱即用,但您的浏览器无法解释它。这是Browserify的用处......

当您在入口点运行命令browserify main.js -o bundle.js时,Browserify遍历所有依赖关系(此处为module.js)并将它们加载到一个包中。该软件包可在您的浏览器中使用,因此您现在可以将其加载到脚本标记中:

<script src="bundle.js"></script> 
+0

仍然不清楚说实话。为什么我会收到错误?我做了一切正确的事,不是吗? – huzal12

+0

我认为你的依赖不正确的管理。在你的问题中,你说你在加载任何其他的.js文件之前加入'bundle.js'“。但是,如果你使用Browserify,你应该围绕模块来组织你的项目,并避免独立的JS脚本文件... – Badacadabra

+0

此外,当你说“我然后在这个变量上调用authorize(),在下一个文件包含前端“,我怀疑你试图从一个简单的JS脚本文件访问你的变量。这是行不通的,因为Browserify包就像是一个拥有自己范围的大模块。它被严格封装在一个函数中。 – Badacadabra