CNode

客户端加载node_modules里面的模块

问答
Gguosheng1987发布于11 年前最后回复11 年前4 回复5930 浏览0 收藏

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

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

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

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

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

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

查看回复

回复 (4)

I
i5ting#1·11 年前

用bower安装到public下面去

N
nekron#2·11 年前

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

O
okoala#3·11 年前

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

G
guosheng1987#4·11 年前
引用 okoala要有一个概念,express是可以设置多个静态目录的。可以理解为socket.io为自己本身设置了静态目录,而moment没有,所以使用的是默认的public目录。但是public下并没有对应...

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

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

视图中就可以这样调用

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

参与回复
登录后即可参与回复。登录