【问题标题】:express.static does not deliverexpress.static 不发货
【发布时间】:2018-07-18 09:49:50
【问题描述】:

我搜索了所有主题,但找不到类似的问题。

我在文件夹/build 中有一个server.js

// /build/server.js

import express from 'express';

const app = express();

app.use('/static', express.static(path.join(__dirname, 'build', 'static'), { maxAge: '30d' }));

/build/static/css/my.css 中的一个 css 文件。 我从根文件夹/ 使用build/server.js 启动nodemon

我假设我应该通过 localhost:8080/static/css/my.css 获取我的文件 但它返回 404 和“Cannot GET /static/css/my.css”

可能是什么问题? 我尝试了很多不同的路径,但都没有得到成功的响应。

提前致谢。

【问题讨论】:

  • __dirname 对应文件的CWD。所以,path.join(__dirname, 'static)` 应该可以解决问题。
  • 苦苦挣扎了很久。现在我解雇了__dirname,它可以工作了。这是好习惯吗? app.use('/static', express.static(path.join('build/static'), { maxAge: '30d' })); 加入的路径之前是 /build/static,现在是 build/static
  • 是的。看起来不错。
  • 谢谢@MukeshSharma 但这仍然很奇怪.....console.log(path.join(__dirname, 'static'), path.join('build', 'static'), path.join('build/static')); 这给了我/static build/static build/static。我认为前面的/ 是问题......我不太明白......

标签: node.js express webpack static dirname


【解决方案1】:

我最终决定使用__dirname,以防止由服务器启动目录的相对路径引起的错误。

主要问题是__dirname 总是返回/。 我在我的 webpack 配置中添加了以下几行:

target: 'node', // was already there
node: { // has been added
  __filename: false,
  __dirname: false
},

您可以在此处找到对 webpack 中 __dirname 行为的更详细描述:https://github.com/webpack/webpack/issues/2010#issuecomment-181256611

【讨论】:

    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2017-02-17
    相关资源
    最近更新 更多