我正在运行一个纯粹的JavaScript项目(不使用节点),我需要为Promises加载一个名为Bluebird的模块。 我没有使用JavaScript加载模块的经验,我过去总是使用平均堆栈。
我在index.html中有以下内容:
<script data-main="assets/js/app/App.js" src="assets/js/vendor/require.js"></script>
<script src="assets/js/app/App.js"></script>
我在网上看到我的App.js应该有:
define(["bluebird"],function(Promise){
//load modules
});
问题在于我不知道用什么代替“// load modules”来加载bluebird.js。我尝试过使用:
define(["bluebird"],function(Promise){
Promise = require('bluebird');
});
但这有错误:
require.js:5 Uncaught Error: Mismatched anonymous define() module: function (Promise){
Promise = require('bluebird');
}
请注意,我确实尝试使用var Promise = require('bluebird');
但这返回了Uncaught Error: Module name "bluebird" has not been loaded yet for context: _. Use require([])
答案 0 :(得分:0)
结束我在requirejs错误文档中的原始代码是正确的但是我的index.html中存在导致它失败的问题。
包含蓝鸟的正确方法是:
require(['bluebird'], function (Promise) { //module loaded });
在//module loaded
中,您需要放置大量的App.js代码。
如果requirejs正在加载它,你需要确保不包括for bluebird。
答案 1 :(得分:0)
这是另一种方法:
define(function (require) {
"use strict";
var Promise = require('bluebird');
...
}
请注意,Bluebird模块不会延迟加载,这只是一种语法糖,可以使依赖项更具可读性。