Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Browserify不起作用-为什么?_Javascript_Browserify - Fatal编程技术网

Javascript Browserify不起作用-为什么?

Javascript Browserify不起作用-为什么?,javascript,browserify,Javascript,Browserify,我将以下代码浏览到bundle.js,在加载任何其他.js文件之前将其包含在前端。我浏览的文件简单如下: var firebase = require('firebase') 然后,我在前端包含的下一个文件中对此变量调用authorize(),但我得到一个错误,说firebase未定义?Browserify是一个模块绑定器,允许您在浏览器中使用CommonJS(节点)模块。这意味着您的项目必须遵循CommonJS惯例来导出(导出,模块。导出)和导入(需要)模块。以下是一个基本示例: 您的模块(

我将以下代码浏览到bundle.js,在加载任何其他.js文件之前将其包含在前端。我浏览的文件简单如下:

var firebase = require('firebase')

然后,我在前端包含的下一个文件中对此变量调用authorize(),但我得到一个错误,说firebase未定义?

Browserify是一个模块绑定器,允许您在浏览器中使用CommonJS(节点)模块。这意味着您的项目必须遵循CommonJS惯例来导出(
导出
模块。导出
)和导入(
需要
)模块。以下是一个基本示例:

您的模块(module.js)

您的入口点(main.js)

此代码将在节点上即时运行,但浏览器无法对其进行解释。这就是Browserify有用的地方

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

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


您以前使用过Browserify吗?:)不,哈哈,我只是想弄点东西,你想解释一下吗?当然可以!老实说,目前还不清楚。为什么我会出错?我做的每件事都是正确的,不是吗?我认为您的依赖关系管理不正确。在您的问题中,您说在加载任何其他.js文件之前包含
bundle.js
。但是如果你使用Browserify,你应该围绕模块组织你的项目,避免独立的JS脚本文件……而且,当你说“我然后在前端包含的下一个文件中调用这个变量的authorize()”时,我怀疑你是在试图从一个简单的JS脚本文件访问你的变量。这将不起作用,因为Browserify包就像一个有自己作用域的大模块。它被严格封装在一个函数中,我只需要访问firebase模块(仅此而已)。我该怎么做呢?是的,这就是我要做的您的源代码仍然有几个脚本文件(您的模块…),但您的包将包含所有代码。这是非常有效的,因为您的所有JavaScript将只加载一个HTTP请求。
var module = require('./module');

module.foo(); // Foo
module.bar(); // Bar
<script src="bundle.js"></script>