这是我第一天做节点,我在尝试捆绑一些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_modules
与ln -sf ../models .
和ln -sf ../collections .
问题1:任何提示我做错了什么?
问题2:如果static/bundle.js
存在。是否再次运行browserify会覆盖该文件?在我的本地测试中它不会覆盖,所以我是否应该每次都删除此文件进行更新?
答案 0 :(得分:24)
可以考虑在您的路径中添加./
:
var Movie = require('./models/movie');
答案 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 后,它再次正常工作。