节点未解析客户端模块

时间:2013-06-16 06:32:03

标签: node.js node-modules

我有一个Node应用程序,我想使用socket.io将数据传送到客户端,并由smoothie显示。我在两个不同的节点环境中安装了两个软件包(通过NPM),在两种情况下都安装在我项目的node_modules子目录中。其中一个环境是BeagleBone Black,另一个环境是Cloud9 IDE环境。在这两种情况下,socket.io模块都可以解析并正常工作,但没有路径名组合可以解析思慕雪模块(如果我直接从GitHub中取出它,我可以开始工作)。

以下是Cloud9 IDE的服务器端代码的相关位:

var app = require('http').createServer(handler)
  , io = require('socket.io').listen(app)
  , fs = require('fs')

app.listen(process.env.PORT, process.env.IP);

function handler (req, res) {
  fs.readFile(__dirname + '/NotWorking.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }
    res.writeHead(200);
    res.end(data);
  });
}
.
.
.

以下是来自客户端的相关位:

<!DOCTYPE html>
<html>
<head>
    <script src="smoothie/smoothie.js"></script>
    <script src="socket.io/socket.io.js"></script>
    <script>
    var line1 = new TimeSeries();
    var line2 = new TimeSeries();
    var socket = io.connect('http://demo-project.wisar.c9.io/');
    socket.on('news', function (data) {
        for (var property in data) {
            dataPoint = data[property];
        }
        line1.append(new Date().getTime(), dataPoint);
        line2.append(new Date().getTime(), 40);
        socket.emit('my other event', { my: dataPoint });
    });
</script>
.
.
.    

正如我所说,这两个模块都位于上述脚本所在的项目目录的node_modules子目录中。节点文档描述了如何解析包含(http://nodejs.org/api/modules.html#modules_all_together),我认为我可以通过index.js路由来解决它如何解析socket.io的链接...但是它当我在前面放一个“/”时我也找不到路径。没有排列或路径组合使得思慕雪模块解决。 smoothie,顺便说一句,是一个小图表应用程序,可以在该名称的npm中找到。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您当前的文件与node_modules位于同一目录中,则要加载smoothie,请在脚本标记的src中尝试此路径:

./node_modules/smoothie/smoothie.js

路径smoothie/smoothie.js未提供位于smoothie.js的{​​{1}}的位置。这对我有用,我希望这适合你。