【问题标题】:Load local javascript file in chrome for testing?在chrome中加载本地javascript文件进行测试?
【发布时间】:2014-01-11 23:20:21
【问题描述】:

我正在尝试使用 Chrome 浏览器在本地计算机上测试一些 JavaScript,但 Chrome 不会加载本地资源。有没有简单的解决方法?

【问题讨论】:

  • 使用网络服务器?你在说什么?
  • 只是测试一个网页。在浏览器中预览。例如:
  • 答案:在 localhost 上使用 Web 服务器。
  • 如果 html 文件没有在 Web 服务器上运行,并且永远不会运行怎么办?就我而言,我需要一个在本地运行但仍需要加载 json 文件的 html 页面。我无法调整我的 Chrome 设置,因为 html 文件应该在任何地方运行,而不仅仅是在我自己的机器上。
  • @SLaks 如果您打算最终在 Android 上的 WebView 中运行它(它将运行本地资源)但需要在本地调试引导问题,这不是一个好的答案。

标签: javascript browser


【解决方案1】:

如果您只想测试 JavaScript 文件的功能:创建一个空白 HTML 文件,添加一个指向 JS 文件的链接,就像您通常从 HTML 加载 JS 文件一样,然后在 Chrome 中打开该 HTML 文件。转到 JavaScript 控制台。您将能够像往常一样与 JS 代码的功能进行交互。您不需要为此设置服务器。如果仍然不清楚,这里有一个例子:

<html> 
    <head> 
        <script type = "text/javascript" src = "path/to/your/jsfile"></script>
    </head> 
</html>

【讨论】:

  • 这在我做file:///Users/someuser/dev/file.js时有效
  • 当我尝试这个时,我得到了 很多 奇怪的行为 - 我无法访问 CSS 样式对象,我的一些事件处理程序不起作用,我不能为 AJaX 请求提供凭据,...
  • 我同意@Michael这不是一个好方法
【解决方案2】:

运行一个简单的本地 HTTP 服务器

要测试这些示例,需要一个本地网络服务器。 Python 的SimpleHTTPServer(或http.server,取决于安装的 Python 版本)提供了最简单的方法之一。

# Install Python & try one of the following depending on your python version. if the version is 3.X
python3 -m http.server
# On windows try "python" instead of "python3", or "py -3"
# If Python version is 2.X
python -m SimpleHTTPServer

【讨论】:

    【解决方案3】:

    要在仅使用本地计算机而不使用网络服务器时在 Chrome 中加载本地资源,您需要添加 --allow-file-access-from-files 标志。

    您可以有一个允许访问文件的 Chrome 快捷方式,一个不允许访问的快捷方式。

    在桌面创建Chrome的快捷方式,右键快捷方式,选择属性。在打开的对话框中找到快捷方式的目标,并在 chrome.exe 后添加参数,留一个空格

    例如C:\PATH TO\chrome.exe --allow-file-access-from-files

    此快捷方式将允许访问文件,而不会影响您拥有的任何其他 Chrome 快捷方式。

    当您使用此快捷方式打开 Chrome 时,它​​应该允许使用 HTML5 和文件系统 API 加载本地资源。

    【讨论】:

    • 我刚试过这个,没有效果。还有什么需要设置的吗?
    • 适用于 linux /usr/bin/chromium-browser --allow-file-access-from-files
    • 不适用于 Win10 的 Powershell 或 Cmd:`C:\"Program Files (x86)"\Google\Chrome\Application\chrome.exe --all ow-file-access-from-files` .实际上,在 Cmd 中,它出于某种原因尝试将 .exe 作为页面打开...
    • 在 Ubuntu 上为我工作。但是你必须在这样的 chrome 重启之前完全杀死所有的 chrome 进程。
    【解决方案4】:

    出于安全原因,现代浏览器不会从本地运行的 HTML 文件(地址栏中使用file:// 协议的文件)加载资源。

    让现代浏览器在本地 HTML 文件中加载和运行 JavaScript 文件的最简单方法是运行本地 Web 服务器。

    如果您不想麻烦设置 Node 或 Apache Web 服务器来测试您的 JavaScript,那么我建议您安装 Visual Studio CodeLive Server 扩展。

    Visual Studio 代码

    Visual Studio 代码是一个源代码编辑器,适用于几乎所有的编程语言。它内置了对 JavaScript、HTML、CSS、TypeScript 和几乎所有用于 Web 开发的语言的支持。

    安装 Visual Studio 代码

    您可以从https://code.visualstudio.com/ 获取适用于您平台的 Visual Studio Code 编辑器。它支持 Windows、Linux 和 Mac。如果你喜欢的话,我认为它也适用于你的 Surface Pro。

    添加实时代码扩展

    安装 VS Code 后,您可以使用 Visual Studio Code 中的扩展面板(Windows 中的 Ctrl+Shift+X)添加 Live Code 代码扩展。

    Live Server Extension

    添加扩展后,您应该会在 Visual Studio Code IDE 的右下角看到一个“上线”按钮(如上图所示)。

    在代码中打开

    在 Visual Studio Code 中打开 HTML 和 JavaScript 文件所在的根文件夹,然后单击“上线”按钮。或者,您可以在资源管理器中右键单击 HTML 文件 (Ctrl+Shift+E),然后从出现的弹出菜单中选择 Open with Live Server

    Open with Live Server

    这应该会创建一个本地运行的 Web 服务器并在您的 Web 浏览器中打开文件或文件夹。如果您的文件路径正确,您的 JavaScript 文件也应该正确加载和运行。

    疑难解答

    如果由于某种原因,页面无法在您喜欢的浏览器中加载,请检查地址和端口号是否正确。如果 Live Server 正在运行,它应该在 Visual Studio IDE 的右下角显示端口号。确保浏览器中的地址显示为 http://127.0.0.1:&lt;PORT&gt;/index.html,其中 &lt;PORT&gt; 与 Visual Studio Code 中状态栏中显示的数字相同。

    【讨论】:

      【解决方案5】:

      这是我在 /sandbox 目录中创建 2 个文件的方法:

      • 第一个文件:sandbox.js
      • 第二个文件:index.html

      const name = 'Karl'
      
      console.log('This is the name: ' + name)
      <html>
        <head>
          <script type = "text/javascript" src = "file:///Users/karl/Downloads/sandbox/sandbox.js"></script>
        </head>
      </html>

      然后您可以使用 Chrome 或任何浏览器来检查和调试/控制台您的代码!

      【讨论】:

        【解决方案6】:

        你可以通过 chrome 的 DevTools 的一个功能来做到这一点:Snippets

        1. 创建一个新的 sn-ps
        2. 复制并粘贴您要执行的文件。
        3. 点击CtrlEnter运行sn-p

        【讨论】:

        • 我很欣赏这个信息,但是当@Sophie Su 说“复制并粘贴文件”时,我认为这意味着复制并粘贴 one js 文件的全部内容。但我认为最初的问题是让一个 html 文件运行多个 js 文件和命令,与从服务器获取时完全一样,而不是一次沿着一个文件或命令推送它。跨度>
        【解决方案7】:

        我发现的最简单的解决方法是使用 Firefox。它不仅无需额外步骤即可工作(拖放 - 无需大惊小怪),而且黑盒比 Chrome 更有效。

        【讨论】:

          【解决方案8】:

          如果您仍然需要这样做,我遇到了同样的问题。 不知何故,EDGE 会呈现所有脚本,即使它们不是通过 HTTP、HTTPS 等... 直接用Edge从文件系统打开html/js文件,就可以了。

          【讨论】:

          • 不再。即使标记为“您的代码”也不会发生任何事情,并且文件会从控制台中消失。
          【解决方案9】:

          使用 Chrome 浏览器和用于 Chrome 扩展的 Web 服务器,设置一个默认文件夹并将链接的 html/js 文件放在那里,在 Chrome 中浏览到 127.0.0.1:8887(无论端口设置为 0r)并打开开发人员面板和控制台。然后,您可以在控制台中与您的 html/js 脚本进行交互。

          【讨论】:

          • 你可以在这里得到它chrome.google.com/webstore/detail/web-server-for-chrome/… 并且你设置的任何默认文件夹都将是你的网络服务器,如果你不想设置 Apache 或其他任何东西,这很方便。
          • 如果您在code.visualstudio.com 使用 VS 代码编辑器,更简单的方法是安装 Live Server 扩展,那么您就不需要任何其他东西了,您的项目文件夹(可以是任何文件夹) 在 VS Code 中打开只需在资源管理器中右键单击 HTML 文件(带有链接的 js)并选择“使用实时服务器打开”,然后浏览到 localhost:5500,您可以在浏览器中查看输出并使用 chrome/firefox 控制台。
          【解决方案10】:

          我发现最简单的方法是将文件内容复制到浏览器控制台并按 Enter。这种方法的缺点是只能使用 console.log 语句进行调试。

          【讨论】:

            【解决方案11】:

            Windows 8.1 添加:

            --allow-file-access-from-files

            到引号后的目标文本框的末尾。

            EX: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files

            像魅力一样工作

            【讨论】:

              【解决方案12】:

              不知道为什么@user3133050 被否决,这就是你需要做的一切......

              这是您需要的结构,基于您的脚本标签的 src,假设您尝试将 moment.js 加载到 index.html

              /js/moment.js
              /some-other-directory/index.html
              

              ../ 在“some-other-directory”文件夹级别“向上”查找,找到它旁边的 js 文件夹,然后将 moment.js 加载到里面。

              听起来您的index.html 处于根级别,或者嵌套更深。

              如果您仍在苦苦挣扎,请创建一个test.js 文件在与index.html 相同的位置,然后添加一个&lt;script src="test.js"&gt;&lt;/script&gt; 并查看它是否加载。如果失败,请检查您的语法。在 Chrome 46 中测试。

              【讨论】:

              • 它被否决了,因为它只适用于网络服务器。现代浏览器使用本地文件来防止这种情况。这是一个“安全”功能......
              【解决方案13】:

              看看你的html文件在哪里,你提供的路径是相对的而不是绝对的。你确定它放置正确吗?根据您在上面示例中提供的路径:“src="../js/moment.js" " JS 文件在层次结构中高一级。 所以应该如下放置:

              父文件夹 子文件夹 .html 文件 js(这是一个文件夹) 时刻.js

              双点表示当前目录的父文件夹,在您的情况下,当前目录是html文件的位置。

              但是为了让您的生活更轻松,使用服务器可以避免手动执行此操作的麻烦,因为服务器目录始终相同,因此更容易。

              【讨论】:

                【解决方案14】:

                您可以使用轻量级网络服务器来提供文件。
                例如,
                1.安装节点
                2.安装“http-server”(或类似的)包
                3.从脚本文件所在的文件夹运行http-server包(“http-server -c-1”)
                4. 从 chrome 控制台加载脚本(在 chrome 控制台上运行以下脚本

                var ele = document.createElement("script");
                var scriptPath = "http://localhost:8080/{scriptfilename}.js" //verify the script path
                ele.setAttribute("src",scriptPath);
                document.head.appendChild(ele)
                
                1. 脚本现在已加载到浏览器中。您可以从控制台对其进行测试。

                【讨论】:

                • 测试本地文件很麻烦。当文件需要在任何地方运行而不是只在您自己的机器上运行时,它也不起作用。
                • @Kokodoko - 不是关于从本地机器加载和执行javascript文件的问题吗?
                • 运行服务器对我来说更简单。如果安装了 Python,请将 PowerShell 导航到包含 .html 文件的目录,运行 python3 -m http.server 8000,然后将 Chrome 导航到 localhost:8000/my-file.html。无需修改脚本,尽管当 Chrome 提示它已阻止它时,我确实需要允许 JS 用于 localhost:8000(我在 Chrome 中默认禁用 JS)。
                猜你喜欢
                • 2021-10-06
                • 1970-01-01
                • 1970-01-01
                • 2016-05-27
                • 1970-01-01
                • 2014-06-15
                • 2016-03-13
                • 2021-03-25
                • 2019-02-12
                相关资源
                最近更新 更多