客户端加载node_modules里面的模块
发布于 9 年前 作者 guosheng1987 5254 次浏览 最后一次编辑是 8 年前 来自 问答

用express4.0建好项目之后 我npm安装了moment.js库 现在希望在客户端加载moment.js 于是我这样引用

<script src="/moment/moment.js"></script> 得到404错误 也就是说 http://127.0.0.1:3000/moment/moment.js 访问始终抛出了一个404错误

那么现在我不太理解的是moment.js 是否需要单独的移送到public 目录下面然后以静态的形式访问 否则的话难道需要自己写路由代码像

app.use(’/’, routes); app.use(’/users’, users);

这样把url路由到对应的文件,但是客户端加载 socket.io 例如这样

<script src="/socket.io/socket.io.js"></script>

成功了 现在我就很不理解这个路由加载的过程 到底express 自己创建的web服务器是怎么样查找对应文件的?

4 回复

用bower安装到public下面去

我倒是很好奇,为什么加载socket.io能成功。。。

要有一个概念,express是可以设置多个静态目录的。可以理解为socket.io为自己本身设置了静态目录,而moment没有,所以使用的是默认的public目录。但是public下并没有对应的moment.js文件,所有就报404错误了。

@okoala 应该是你说的这个问题,这样解释起来比较合理,解决方案应该是用1楼的 我现在没有把moment载入到客户端了,在stackoverflow 上面搜索到一种比较好的解决方案

var moment = require(‘moment’); res.render(‘index’, { title: ‘Express’, msgData: msg , moment: moment});

视图中就可以这样调用

<%= moment(msgData[i].created_at*1000).fromNow(); %>

回到顶部