我正在使用Express JS和EJS View 引擎开发一个Web应用程序,它将部署在AWS Amplify上。一切都可以在localhost上正常工作,但是当我在Amplify上部署静态文件(css,js)时存在问题。此问题的详细信息如下所述:
1.问题描述:
___.amplifyapp.com/
/register
:真正的路径将是https://myuser.amplifyapp.com/global/js/Base.js/
而不是https://myuser.amplifyapp.com/register/global/js/Base.js/
)2.我的源代码结构如下:
| 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
'public'
设置了静态文件夹:app.use(express.static(path.join(__dirname, 'public')));
<link rel="stylesheet" href="global/vendor/animsition/animsition.css">
<script src="global/vendor/animsition/animsition.js"></script>
"build": "del-cli dist && mkdir dist && ncp public dist && ncp views dist && copyfiles app.js dist && copyfiles package.json dist"
amplify.yaml
中的配置为:frontend:
phases:
preBuild:
commands:
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: dist
files:
- '**/*'
cache:
paths:
- node_modules/**/*
3.我尝试过的操作:我已经阅读了stackorverflow中的很多问题,并遵循了他们的建议,但是没有任何效果。'/'
或'../'
添加到静态文件的链接中:<link rel="stylesheet" href="/global/vendor/animsition/animsition.css">
<script src="/global/vendor/animsition/animsition.js"></script>
如何解决此问题?您的任何建议,我将不胜感激。非常感谢!
最佳答案
AWS Amplify是静态网络托管服务(仅前端),不适用于nodejs + ejs。
这表示您无法使用express进行放大,而无法创建具有特定端口号的服务器,但是放大允许您使用express来构建REST api,而不渲染页面。
我认为您应该将网站放入EC2,而不是放大。
你可以看看Amplify faqs