ExpressJS中的子例程没有为JS和CSS提供HTNL

ExpressJS中的子例程没有为JS和CSS提供HTNL,express,static,routes,Express,Static,Routes,我终于找到了与expressJS合作的Fideling。我已经编写了一个简单的RestAPI,还想提供一些静态HTML,这些HTML(通过客户端JavaScript)使用我的RestAPI RestAPI工作正常,但在某些子例程上,CSS和JS文件在错误的URL下查找 我有以下目录设置: src |---models |---controllers |---views |---css |---main.css |---js |---co

我终于找到了与expressJS合作的Fideling。我已经编写了一个简单的RestAPI,还想提供一些静态HTML,这些HTML(通过客户端JavaScript)使用我的RestAPI

RestAPI工作正常,但在某些子例程上,CSS和JS文件在错误的URL下查找

我有以下目录设置:

src
|---models
|---controllers
|---views
     |---css
          |---main.css
     |---js
          |---core.js
     |---html
          |---login.html
          |---payments.html
     |---static
这两个HTML文件都使用

<script src="core.js" type="text/javascript"></script>
现在奇怪的是,如果我调用myserver.com/,登录页面会显示所有样式和JS功能,但是如果我打开myserver.com/path1/path2 ExpressJS,它会尝试查找myserver.com/path1/(例如myserver.com/path1/main.css)下的文件,而不是myserver.com/main.css

不起作用的HTML(通过/path1/path2路径发送)如下所示:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="main.css"/>
    <title>Greatpay login</title>
</head>
<body data-pagetype="login">
<header class="header">
    <img src="logo.png"/>
</header>
<div class="body">
    <div class="loginbox">
    <span class="error"></span>
        <div class="fieldline">
            <span>Organisation:</span>
            <input type="text" name="organisation"/>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Environment:</span>
            <select name="environment"/>
                <option value="TEST">Test</option>
                <option value="PROD" selected="selected">Production</option>
            </select>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Username:</span>
            <input type="text" name="username"/>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Password:</span>
            <input type="password" name="password"/>
        </div>
        <button id="login">Login</button>
    </div>
</div>
<footer>
    <script src="jquery-3.4.1.min.js" type="text/javascript"></script>
    <script src="core.js" type="text/javascript"></script>
</footer>
</body>
</html>

Greatpay登录
组织:
环境:
试验
生产
用户名:
密码:
登录
谁能帮我解决这个问题,解释一下为什么会这样


提前谢谢。

您可以在使用资产的地方共享html文件的代码吗?好的,我已经添加了html。正如我所看到的,您在添加前缀
view
时设置了视图文件夹,但是在静态文件夹定义时您在前缀“src”。我想你应该看看这个……我也这么认为,但是当我在src/view前面加前缀而不是view时,它会在sr/src/view前面加前缀。顺便说一句,我在heroku上托管。你有相对路径,我想你需要绝对路径

<!DOCTYPE html>
<html lang="de">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="main.css"/>
    <title>Greatpay login</title>
</head>
<body data-pagetype="login">
<header class="header">
    <img src="logo.png"/>
</header>
<div class="body">
    <div class="loginbox">
    <span class="error"></span>
        <div class="fieldline">
            <span>Organisation:</span>
            <input type="text" name="organisation"/>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Environment:</span>
            <select name="environment"/>
                <option value="TEST">Test</option>
                <option value="PROD" selected="selected">Production</option>
            </select>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Username:</span>
            <input type="text" name="username"/>
            <div class="clear"><!---clear---></div>
        </div>
        <div class="fieldline">
            <span>Password:</span>
            <input type="password" name="password"/>
        </div>
        <button id="login">Login</button>
    </div>
</div>
<footer>
    <script src="jquery-3.4.1.min.js" type="text/javascript"></script>
    <script src="core.js" type="text/javascript"></script>
</footer>
</body>
</html>