如何从云功能HTML文件访问本地JavaScript文件?

问题描述 投票:0回答:1

我试图使用脚本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文件,这意味着我需要在viewerApp.html文件中包含我的所有JavaScript,这将是一团糟。

我在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

(如果我尝试引用不存在的文件名,我会得到相同的错误,所以我怀疑文件路径有问题或者访问本地文件系统的能力有限制)

我不知道该怎么做与<character相关的错误,因为test.js的内容很简单:

console.log("logging happened");

任何帮助将非常感谢。谢谢!!

javascript node.js express google-cloud-functions
1个回答
0
投票

问题到底是我没有初始化和配置firebase托管,这似乎是允许html / js / css和其他静态文件在从云函数返回的HTML中可访问的内容。一旦我这样做并设置了公共文件夹,我就可以通过将它放在公共文件夹中来引用test.js文件。这加上调整到firebase.json文件的重写部分,我已经完成了设置。在此之后,video帮了很多忙,并且包含了所有必需的步骤。

© www.soinside.com 2019 - 2024. All rights reserved.