Ответ 1
Можно подумать о добавлении ./
к вашему пути:
var Movie = require('./models/movie');
см. ниже: Как использовать браузеру для объединения базового приложения?
Это мой первый день, когда я делаю node, у меня возникают некоторые проблемы с попыткой связывания некоторых js файлов.
MyFolder
|-- app (folder)
| |-- Collections (contains: movies.js)
| |-- Models (contains: movie.js)
| |-- node_modules
|-- main.js
|-- node_modules (folder)
|-- static (folder)
Это содержимое js файлов, которые я хочу сжать в static/bundle.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
существует. Запускает ли браузер повторно перезаписывает файл или нет? В моих локальных тестах он не перезаписывается, поэтому я должен каждый раз удалять этот файл для обновления?
Можно подумать о добавлении ./
к вашему пути:
var Movie = require('./models/movie');
см. ниже: Как использовать браузеру для объединения базового приложения?
Для людей, поступающих из поисковых систем:
Возможно, вы используете mac, и вы не использовали правильный случай, требуя файл.
Это эквивалентно в mac:
require('./someFile');
require('./somefile');
Но не в centOs, например.
Если вы используете ваш отладчик и входите в вызов 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
(я использую alt-cmd-l
в PhpStorm) и повторю попытку.