Expressjs路由优先级再次

时间:2015-09-16 15:58:34

标签: node.js express

正如我在Order of router precedence in express.js中提出的问题。我知道express.js的顺序是先到先得。但是,随着代码的咆哮,我不明白为什么' __ dirname'已经在其他代码的上面声明并修复了但是我从./public/abc.js调用了javascript,该应用程序返回主页的HTML标记。 我的网页包含一些javascript,无法加载。服务器返回100%HTML

我正在使用快速生成器和文件夹的结构如下。

的NodeJS

var routes = require('./routes/index');
var api = require('./routes/api');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
    extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/api', api);
app.use('/users', users);

app.use('/:shopName', function(req, res, next) {
    req.shopName = req.params.shopName;
    next();
}, routes);

app.use('/', function(req, res) {
    res.render('index', {
        title: 'MainPage'
    });
});

客户端Javascript放入脚本标签,如

<script type="text/javascript" src='./public/javascripts/Crypto/crytoUtils.js'></script>

浏览器发出错误&#34; Uncaught SyntaxError:意外的令牌&lt; cryptoUtils.js&#34;在控制台中,当我点击链接时,我看到主页HTML标记..

帮我解决问题......请帮忙。感谢

1 个答案:

答案 0 :(得分:1)

js文件的路径应为 ./ abc.js public 除非您使用以下命令将其设置为静态文件的根目录:

app.use('/public', express.static(path.join(__dirname, 'public')));

要明确,我建议使用上面的代码 NOT ,而是修改脚本标记src属性中的url,以便在 / javascripts / Crypto /的位置正确定位文件。 crytoUtils.js