【问题标题】:How to Access Local JavaScript File from a Cloud Functions HTML File?如何从 Cloud Functions HTML 文件访问本地 JavaScript 文件?
【发布时间】:2019-02-28 22:48:47
【问题描述】:

我正在尝试使用 script src 属性从 HTML 文件中简单地访问 JavaScript 文件,但我一直无法这样做。这两个文件都在我的函数文件夹中。

我的函数文件夹中有以下 Cloud Function index.js 文件:

const functions = require('firebase-functions');
const db = require('./admin');
var viewerApp = require('./viewerApp');

exports.view = functions.https.onRequest(viewerApp);

viewApp.js 文件如下所示:

const express = require("express");
const fs = require('fs');
const viewerApp = express();

module.exports = 
  viewerApp.get('/:collection_name/:id', (req, res) => 
    {
      var viewerHTML = fs.readFileSync('./viewerApp.html').toString();
      var id = req.params.id;
      var collection_name = req.params.collection_name;
      var rendered_HTML = eval(viewerHTML);
      res.send(rendered_HTML);
    }
  )

您会注意到 eval(viewerHTML) 语句,它引用了一个名为 viewerApp.html 的单独 html 文件,该文件基本上包含一个模板文字,如下所示:

<!DOCTYPE html>
  <html lang="en">
    <body>
    ...
    </body>
  </html>

(如果有人有更好的建议将 HTML 分离到一个单独的文件中,同时能够使用 ${variables} 也会有所帮助,因为 eval() 并不理想,也许是导致我的原因的一部分问题)

以上工作正常,除了我不知道如何引用位于同一函数文件夹中的 JavaScript 文件,这意味着我需要将我所有的 JavaScript 包含在 viewerApp.html 文件中,这将是一团糟。

我已经在 viewerApp.html 文件中尝试了所有这些可能性(尝试引用名为 test.js 的 JavaScript 文件):

<script src="./test.js"></script>
<script src="/test.js"></script>
<script src="test.js"></script>
<script src=test.js></script>

以上所有都在控制台中产生以下错误:

Uncaught SyntaxError: Unexpected token <       test.js:2

(如果我尝试引用不存在的文件名,我会遇到同样的错误,因此我怀疑文件路径存在问题或访问本地文件系统的能力受到限制)

我不知道如何处理与

console.log("logging happened");

任何帮助将不胜感激。谢谢!!

【问题讨论】:

  • 您使用 google-cloud-firestore 对此进行了标记,并在标题中提到了 Firestore,但我并没有真正看到您的问题描述中涉及到它。
  • 好点。我想我认为 Cloud Functions 与 Cloud Firestore 更直接相关,但经过审查,我发现 Cloud Functions 是“Google Cloud Platform product" on its own”。
  • 是的,Cloud Functions 和 Cloud Firestore 交叉的唯一方法是编写 Firestore 触发器。这不是这里发生的事情。

标签: javascript node.js express google-cloud-functions


【解决方案1】:

最后的问题是我没有初始化和配置 Firebase 托管,这似乎是允许 html/js/css 和其他静态文件在从云函数返回的 HTML 中访问的原因。一旦我这样做并设置了公用文件夹,我就可以通过将它放在公用文件夹中来引用 test.js 文件。加上对 firebase.json 文件的重写部分的额外调整,我已经准备好了。遵循此video 帮助很大,并且包含所有必需的步骤。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多