在尝试捆绑许多js文件时,Browserify无法找到模块

时间:2014-12-26 03:31:26

标签: node.js ssh browserify

这是我第一天做节点,我在尝试捆绑一些js文件时遇到了一些问题。

MyFolder
|-- app (folder)   
|  |-- Collections (contains: movies.js)   
|  |-- Models (contains: movie.js)  
|  |-- node_modules  
|-- main.js  
|-- node_modules (folder)    
|-- static (folder)  

这是我要压缩成static / bundle.js

的js文件的内容
 // app/models/movie.js  
 var Backbone = require("backbone");
 var Movie = Backbone.Model.extend({
   defaults: {
     title: "default",
     year: 0,
     description: "empty",
     selected: false
   }
 });
 module.exports = Movie;

 // app/collections/movies.js  
 var Backbone = require("backbone");
 var Movie = require('models/movie');
 var Movies = Backbone.Collection.extend({
      model: Movie
 });
 module.exports = Movies;

当我运行browserify -r ./app/main:app > static/bundle.js时,文件bundle.js是使用app / main.js中的脚本创建的。它按预期工作。

但是当我运行browserify -r ./app/collections/movies.js:movies \ -r ./app/models/movie.js:movie > static/bundle.js时,它会创建一个空的bundle.js并显示:

Error: Cannot find module '/Users/MyFolder/app/models/movie.js:movie' from '/Users/MyFolder'  

我的文件夹app/node_modulesln -sf ../models .ln -sf ../collections .

同步

问题1:任何提示我做错了什么? 问题2:如果static/bundle.js存在。是否再次运行browserify会覆盖该文件?在我的本地测试中它不会覆盖,所以我是否应该每次都删除此文件进行更新?

5 个答案:

答案 0 :(得分:24)

可以考虑在您的路径中添加./

var Movie = require('./models/movie');

请参阅:How to use browserify to bundle a backbone app?

答案 1 :(得分:9)

来自搜索引擎的人:

可能是您正在使用Mac而且在需要文件时没有使用正确的情况。

这相当于mac:

require('./someFile');
require('./somefile'); 

但不是以中心为例。

答案 2 :(得分:0)

如果你使用调试器并进入require电话,你会发现自己在一些缩小的代码中(通常)。

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require== ...

转到您的控制台并检查t[o][1]

这将显示模块的正确路径列表。

Object {
    '<module name>' : <id>
    ...
}

如果这太混乱,请暂时取消编译已编译的bundle.js文件中的第一行(我在PhpStorm中使用alt-cmd-l),然后重试。

答案 3 :(得分:0)

我有同样的错误。就我而言,这是因为如果没有在 require 中直接指定,Browserify 不会检测到该文件。

示例:

变化:

var f = 'filename'
var handler = require('./' + f + '.js'); --> this will generate an error

致:

var handler = require('./filename.js');

答案 4 :(得分:0)

我最近遇到了同样的错误。我正在使用 Gulp 4 运行 Browserify。

问题在于我正在重新组织我的项目文件夹架构,并且我没有为我的捆绑 dist 文件清空目标 (.js) 文件夹。在我清空该文件夹(在我的例子中它被称为 assets)并运行 Browserfy 后,它再次正常工作。