【发布时间】:2020-04-02 18:37:46
【问题描述】:
我正在尝试设置一个 require js 项目以用于学习目的。我需要运行一个 Backbone 应用程序。
Index.html,看起来很简单:
<!DOCTYPE html>
<html>
<head>
<base href="/" />
<title>RequireJS - Test drive</title>
<!-- data-main attribute tells require.js to load scripts/main.js after
require.js loads. -->
<script data-main="js/main" src="js/vendor/require.js"></script>
</head>
<body>
<h1>RequireJS - Test drive</h1>
</body>
</html>
目前我的 main.js 中有这个配置:(这是 index.html 中 requirejs 的入口点)
require.config({
paths: {
underscore: 'vendor/underscore-1.9.1.min',
jquery: 'vendor/jquery-3.4.1.min',
backbone: 'vendor/backbone-1.4.0.min',
app: 'app/app',
userModel: 'app/models/user.model',
userListView: 'app/views/user-list.view',
userSingleView: 'app/views/user-single.view',
},
bundles: {
'models': ['userModel']
},
shim: {
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
},
'underscore': {
exports: '_'
}
},
});
// Start the app
define(['app'], (App) => {
return App.initialize();
});
在我尝试启动应用程序的 app.js 中,我有以下内容:
define(['backbone'], (Backbone) => {
const initialize = () => {
console.log('App initialized.', Backbone);
const data = {title: 'title'};
const view = 0; // new View here....
};
return {
initialize: initialize
}
});
现在,如果我将骨干网作为依赖项删除,我可以在浏览器中看到 console.log 消息。如果我把它留在那里,那么控制台会抛出这个错误:
require.js:5 GET http://127.0.0.1:8080/js/js/vendor/jquery-3.4.1.min.js net::ERR_ABORTED 404 (Not
Found)
require.js:5 Uncaught Error: Script error for "js/vendor/jquery-3.4.1.min", needed by: backbone
https://requirejs.org/docs/errors.html#scripterror
at makeError (require.js:5)
at HTMLScriptElement.onScriptError (require.js:5)
检查网络选项卡,我可以看到 jQuery 依赖项出错了,并且由于某种原因在路径中添加了额外的 /js,这导致 jQuery 出现 404 错误,但仅在我尝试使用时app.js 文件的主干。
路径看起来像这样,添加了额外的 /js:
http://127.0.0.1:8080/js/js/vendor/jquery-3.4.1.min.js
我在应用程序的配置/设置中缺少什么?
【问题讨论】:
-
如果将
vendor/jquery-3.4.1.min更改为./vendor/jquery-3.4.1.min会怎样?
标签: backbone.js requirejs amd