Express JS - 静态文件返回404错误

3

我似乎无法让Express 3.x在我的公共目录中提供静态文件服务。它们所有的请求都以404结束。

    var express = require('express')  
  , engine = require('ejs') 
  , app = express();


app.configure(function () {
    app.use(express.static(__dirname + '/public'));   
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
});

app.get('/', function(req, res) {
    res.render('test.ejs')
});


app.listen(3000);

我的test.ejs文件引用了以下格式的js文件:

<script type="text/javascript" src="js/testscene.js"></script>

我一定是忽略了某些简单的东西。我有以下文件夹结构:

project
  -public
     -js
        testscene.js
  -views ]

有人可以告诉我错过了什么吗?

更新

实际上,我创建了一个新项目,并将我的脚本复制到这个新项目中,它起作用了?! 我想我只能把它关闭,因为这是某种本地化的怪异现象。感谢您花费的所有时间。


你尝试过在顶层调用它而不使用app.configure吗? - SheetJS
我刚刚做了,没什么区别。 - Nick
2
你尝试过将URL设置为/js/testscene.js吗? - SheetJS
是的...很奇怪。我正在看其他项目,这看起来没问题。 - Nick
1个回答

0

__dirname 是当前 .js 文件所在的目录。你的文件系统 ascii 艺术图遗漏了这个必要的部分。如果你的第一个代码片段位于 project/server.js,那么就是正确的。我认为在浏览器中加载 http://localhost:3000 应该能够正确找到 js/testscene.js 文件。然而,使用相对 URI 通常不是一个好主意,除非你确实确定想要/需要它,所以为了保持清醒,将其更改为 src="/js/testscene.js"


1
我正在执行的脚本位于根目录。也就是在 /project/main.js 中。我找不到任何问题。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接