【问题标题】:Why is the browser trying to load a local JavaScript file from a server?为什么浏览器试图从服务器加载本地 JavaScript 文件?
【发布时间】:2017-01-23 15:31:53
【问题描述】:

我有一个尝试访问远程和本地 JavaScript 文件的简单 HTML 页面:

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script src="https://js.arcgis.com/3.19/"></script>
    <script src="SearchExtent.js"></script>
    <script>
        require([
            ...

SearchExtent.js 存储在与 HTML 页面相同的文件夹中。

在 Chrome 和 Edge 中调试 HTML 页面时,出现 404 错误,提示找不到以下资源:

https://js.arcgis.com/3.19/SearchExtent.js

为什么浏览器查看的是远程服务而不是本地文件系统>

【问题讨论】:

  • 尝试使用正斜杠?
  • @Pointy 我相信他的意思是在SearchExtent.js 前面,所以它看起来像&lt;script src="/SearchExtent.js"&gt;&lt;/script&gt;
  • &lt;script src="https://js.arcgis.com/3.19/"&gt; 应该是什么意思?没有脚本名称,只有部分路径。
  • @Quiver 好吧,也许吧,但是 &lt;script&gt; 标签本身并没有什么问题,在名字前面加上一个斜线肯定会改变它的含义

标签: javascript html dojo loader


【解决方案1】:

Dojo 必须正确配置才能同时使用本地和 CDN 源。以下是从 CDN 和本地服务器正确加载内容的代码:

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<link rel="stylesheet" href="https://js.arcgis.com/3.19/esri/css/esri.css">
<script>
    var dojoConfig = {
        paths: { js: location.pathname.replace(/\/[^/]+$/, "") + "/js" }
    };
</script>
<script src="https://js.arcgis.com/3.19"></script>
<script>
    require([
        "js/SearchExtent",
        "dojo/domReady!"
    ], function (SearchExtent) {
        console.log("...");
    });
</script>
</head>
<body>
</body>
</html>

dojoConfig 的paths 属性用于指定“js”别名在本地服务器上的位置。另请注意,没有对自定义 JavaScript 模块的显式引用。对 require 的调用使用 paths 属性中定义的别名引用自定义模块。

【讨论】:

    猜你喜欢
    • 2011-03-12
    • 2017-02-16
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2020-08-16
    • 2015-06-24
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多