【发布时间】:2019-03-17 20:36:56
【问题描述】:
我想从我的节点服务器渲染 Angular 的静态文件。
作为一个实验,以下是我采取的步骤:
通过使用构建我的 Angular 项目创建了一个 dist 文件夹
ng build --prod
复制dist文件夹到我的节点服务器根目录
在我的节点服务器中配置 express 应用程序以指向 dist 文件夹的 index.html。以下是我编写的配置代码片段 -
app.use(express.static(path.join(__dirname, '../front-end/dist/')))
app.get('*', (req, res) => {
return res.sendFile(path.join(__dirname, '../front-end/dist/my-first-app/index.html'))
})
当我在端口 3000 上本地运行我的节点服务器时,如果我是正确的,它应该被重定向到编译的角度 dist 文件夹中的 index.html 页面。好吧,我看到节点正在尝试重定向。但是,重定向后,浏览器无法在 index.html 文件中加载 html。它在控制台上抛出以下错误-
Uncaught SyntaxError: Unexpected token <
上述错误清楚地表明浏览器未能加载html页面。我相信我的理解是正确的。但我无法弄清楚为什么会记录此错误。我希望我能在这里得到一些答案。
我正在尝试在没有 Angular CLI 的 ng serve 命令的情况下工作。如果我成功了,我会尝试在云上尝试这个。我的意图是我只想使用从 Angular 构建生成的静态文件,而不是使用 ng serve 加载它们,并且还想通过使用 node.js 的调用在浏览器上呈现这些文件。由于后端服务器必须是唯一运行的服务器,而前端不应该是服务器,而是简单的静态文件,需要使用来自前者的数据来提供服务。我希望我说得通。
【问题讨论】:
-
你检查this question了吗?
-
@GCSDC 我错过了这个问题。它非常有用,但我得到了我的解决方案。非常感谢。我的代码的问题是,我错过了构建目录路径的子目录。我像这样修改了我的代码并且它工作了 -
app.use(express.static(path.join(__dirname, '../front-end/dist/my-first-app')))所以基本上,我错过了指定具有所有构建文件的my-first-app
标签: javascript html node.js angular