2

我有一个奇怪的情况,特别麻烦的是我已经这样做了很多次,然后它必须是我所缺少的简单的东西。

请帮助我感觉我正在失去理智......

问题/症状

  1. 我可以从 lib 文件夹中加载任何 js 文件
  2. root/public/art我可以在 web 位置下的文件夹中加载任何 png 文件//art/foo/bar.png
  3. 无论我做什么,都无法从 CSS 或 js 加载任何内容,这一切都给了我 404 错误,这让我完全发疯了。
  4. 注释掉第 13 行的相同行为
  5. 与第 14-16 行的各种形式相同
  6. 使用和不使用路由器都一样

文件夹结构

    • 服务器.ts
    • 上市
    • 艺术
      • 子文件夹中的艺术品
    • css
      • 画布.css
    • js
      • js文件在文件夹中,而不是

代码

import * as express from "express";
import * as path from "path";
//const express = require("express")
//const path = require("path")

let app = express()
let port = 3000
let router = express.Router();

router.use('/lib/framework', express.static( path.join(__dirname, 'node_modules','framework')));
router.use('/lib/redactedLib2', express.static(path.join(__dirname, 'node_modules', 'redactedLib2')));
router.use('/lib/redactedLib3', express.static(path.join(__dirname, 'node_modules', 'redactedLib3')));
router.get('/', (req, res) => res.sendFile(path.join(__dirname, 'index.html')))
//app.use('/art/*', express.static(path.join(__dirname, 'public', 'art')));
//app.use('/css/*', express.static(path.join(__dirname, 'public', 'css')));
//app.use('/js/*', express.static(path.join(__dirname, 'public', 'js')));

router.use('/', express.static('public'))

app.use('/', router)

app.listen(port, () => console.log(`Go to http://localhost:${port} to view.`))

解决方案(编辑)

万一以后有人发现这个问题,我一直在修复它,我只需要做一个空缓存并重新加载......如果你在 chrome 打开开发工具 F12 然后单击并按住刷新并选择它。

4

1 回答 1

0

根据您在此处显示的内容,我看到了两个问题。首先是您的目录结构。这与您的结构实际情况准确吗?因为在您的应用程序中,您告诉 Node 将 /art/* 转换为 /public/art/ 目录,但该目录实际上位于 /art。

其次,它是您的虚拟路径前缀的格式。删除 /*; 无需声明通配符值。它只会弄乱路径。尾随 / 也是不必要的,尽管它不应该引起问题。无论哪种方式,将您的路线重组为:

router.use('/lib/framework', express.static( path.join(__dirname, 'node_modules','framework')));
router.use('/lib/redactedLib2', express.static(path.join(__dirname, 'node_modules', 'redactedLib2')));
router.use('/lib/redactedLib3', express.static(path.join(__dirname, 'node_modules', 'redactedLib3')));
app.use('/art', express.static(path.join(__dirname, 'public', 'art')));
app.use('/css', express.static(path.join(__dirname, 'public', 'css')));
app.use('/js', express.static(path.join(__dirname, 'public', 'js')));
router.get('/', (req, res) => res.sendFile(path.join(__dirname, 'index.html')));

并且无论是修复应用程序中的路径连接,还是修复物理文件结构,都将解决加载实际不存在的资源的问题。

于 2019-02-13T04:16:01.537 回答