首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EJS的ExpressJS在AWS扩增上部署时无法加载静态资产

使用EJS的ExpressJS在AWS扩增上部署时无法加载静态资产
EN

Stack Overflow用户
提问于 2020-11-25 14:05:29
回答 1查看 642关注 0票数 4

我正在开发一个使用Express、JS和EJS视图引擎的web应用程序,它将部署在AWS放大器上。所有东西在本地主机上都能正常工作,但是当我将静态文件(css,js)部署到扩容上时,它会有问题。这一问题的详细情况如下:

1.问题描述:

  • 在放大上,网站的根路径(/index)运行良好,静态文件被加载.timifyapp.com/
  • 但是当我转到另一条路径(例如/register)时,它不能加载静态文件/注册
  • 我注意到在加载静态文件时,路径名自动添加到静态文件的所有路径中(在本例中,添加了/register:真正的路径将是https://myuser.amplifyapp.com/global/js/Base.js/而不是https://myuser.amplifyapp.com/register/global/js/Base.js/)

2.我的源代码结构如下:

代码语言:javascript
复制
|   app.js
|   package-lock.json
|   package.json
+---bin
+---dist
|   |   app.js
|   |   error.ejs
|   |   index.html
|   |   package.json
|   |   register.ejs
|   |   verify.ejs
|   +---assets
|   +---global
|   +---javascripts
+---node_modules
+---public
|   +---assets
|   +---global
|   +---javascripts
|   index.html
+---routes
\---views
  • 在app.js中,我已经为'public'设置了静态文件夹
代码语言:javascript
复制
app.use(express.static(path.join(__dirname, 'public')));
  • 在register.ejs中,我当前设置了以下静态文件的链接:
代码语言:javascript
复制
<link rel="stylesheet" href="global/vendor/animsition/animsition.css">
<script src="global/vendor/animsition/animsition.js"></script>
  • 我在package.json中设置的build命令(它复制部署所需的所有文件和文件夹):
代码语言:javascript
复制
"build": "del-cli dist && mkdir dist && ncp public dist && ncp views dist && copyfiles app.js dist && copyfiles package.json dist"
  • 通过创建一个应用程序并将其连接到Github存储库,我使用Github存储源代码,并使用AWS放大器控制台部署我的应用程序。这种方法允许我的应用程序总是重新部署,每当我作出改变和推送到Github。amplify.yaml中的配置是:
代码语言:javascript
复制
frontend:
  phases:
    preBuild:
      commands:
        - npm ci
    build:
      commands:
        - npm run build
  artifacts:
    baseDirectory: dist
    files:
      - '**/*'
  cache:
    paths:
      - node_modules/**/*

3.我尝试过的:我在stackorverflow中阅读了很多问题并遵循了他们的建议,但是没有什么效果。

  • 我已经尝试将'/''../'添加到静态文件的链接中:
代码语言:javascript
复制
<link rel="stylesheet" href="/global/vendor/animsition/animsition.css">
<script src="/global/vendor/animsition/animsition.js"></script>
  • 我试图传递这个职位提到的特定路径
  • 我还试图在公开的情况下为文件夹设置静态,比如资产,全局的,但没有什么更好的了。
  • 我还将视图文件夹中的所有视图移到公用文件夹,并在源代码中更改了视图设置,但结果仍然相同:在本地主机上一切正常,但在部署到AWS扩容.时失败。

我该如何解决这个问题?如果你能给我任何建议,我将不胜感激。非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2020-11-27 02:15:00

AWS扩容是静态的网络托管服务(仅限于前端),它不适用于nodejs + ejs。

这意味着您无法创建一个具有特定端口号的服务器,但可以使用express构建REST,而不是渲染页面。

我认为你应该把你的网站放到EC2,而不是放大。

你可以看看放大常见问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65006304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档