我知道有一个未加载模块的帮助页面,但是,由于requirejs无法找到requirejs,这似乎是一个不同的情况。
我使用npm安装了所有依赖项。我的主要脚本位于项目根目录中,由html页面调用。
以下是网页的摘录:
<script type="text/javascript" data-main="./airportLeafletScript.js" src="node_modules/requirejs/require.js"></script>
然后airportLeafletScript.js的标题如下所示:
var requirejs = require('requirejs');
requirejs.config({
//Pass the top-level main.js/index.js require
//function to requirejs so that node modules
//are loaded relative to the top-level JS file.
nodeRequire: require
});
requirejs(['turf', 'jquery', 'leaflet', 'leaflet-rotatedmarker',
'leaflet-slider', 'shpjs', 'jquery-ui', 'json3', 'esri-leaflet'],
function (turf, $, L, Marker, SliderControl, shp) {
//foo and bar are loaded according to requirejs
//config, but if not found, then node's require
//is used to load the module.
});
实际的错误消息是:
11:03:19.078 Error: Module name "requirejs" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded
makeError() require.js:168
localRequire() require.js:1433
requirejs() require.js:1794
<anonymous> airportLeafletScript.js:46
1 require.js:168:17
那么我怎样才能让requirejs为这个项目工作?它似乎没有正确配置
答案 0 :(得分:1)
您展示的var requirejs = require('requirejs');
代码是在Node.js中运行,而不是在浏览器中运行。另请注意传递给requirejs.config
的配置,其中包含nodeRequire
,这在Node.js中才有意义。
当您使用显示的script
标记在浏览器中加载该代码时,RequireJS已已加载,require
调用尝试再次加载,无论你怎么削减它都很糟糕。它碰巧触发了一个RequireJS特定的错误,但这是尝试通过RequireJS加载为Node.js编写的代码的副作用。
在Node.js中加载相同的代码时,require
调用由Node.js处理。它加载RequireJS然后你可以配置并使用它。