Node.js - 如何链接到本地​​文件?

时间:2016-05-03 19:47:53

标签: javascript node.js

我有一个基本的脚本源链接:

// index.html
<script src="/js/jquery.js"></script>

尽管文件存在,但它不起作用。我试图在Node.js服务器中链接到它,但是它抛出了一个表示没有定义的错误,但它确实存在。

//server.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var clientlist = [];

app.get('/', function(req, res) {
    res.sendfile('index.html');
    app.use(express().static('/js/jquery.js'));
});

3 个答案:

答案 0 :(得分:2)

这是我的解决方案。

注意:

您可能想要使用您正在使用的目录替换&#39; / var / www / nodeserver&#39 ;.

首先,请勿使用res.sendfile(),不推荐使用res.sendFile()。 或者只是提供一个完整的目录:

全部设置

index.js

这可能是你的索引.js&#39;在&#39; / var / www / nodeserver&#39;:

// Setup basic express server
var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);

// Change 3000 to whatever port, you want to access the site with"http://127.0.0.1:3000"
var port = process.env.PORT || 3000;

server.listen(port, function() {
    console.log("Server listening at port "+port);
});

// Routing
var dir = __dirname+'/public'; // Path of the index.js but one dir further (public)
app.use(express.static(dir)); // serve all files in '/var/www/nodeserver/public/'

的package.json

你需要有一个&#39; package.json&#39;,其中包含:

{
    "name": "nameofyourapplication",
    "version": "versionofyourapplication",
    "dependencies": {
        "express": "^4.10.2",
        "socket.io": "^1.3.7"
    }
}

安装

然后使用以下命令安装&#39; package.json&#39;中定义的依赖项:npm install,同时在目录&#39; / var / www / nodeserver /&#39; 。
这将在本地安装所有依赖项,因此它将在&#39; / var / www / nodeserver&#39;中创建名为&#39; node_modules&#39;的文件夹。

使用它

接下来,您只需将要投放的所有文件放入“公共场所”即可。 &#39; / var / www / nodeserver&#39;中的文件夹并运行&#39; index.js&#39;与node index.js

Filetree

你的filetree应该是这样的:

  • nodeserver
    • node_modules
      • 表示
      • socket.io
    • 公共
      • JS
        • 的jquery.js
    • index.js
    • 的package.json

应该这样做!

答案 1 :(得分:2)

您的requires are wrong,因此未定义表达

选择第一行var app = require('express');

var express = require('express');
var app = express();

答案 2 :(得分:0)

在文件名之前,输入__dirname,'index.html'。 新代码将为res.sendfile(__dirname + 'index.html');

您的第一行也是错误的,应该是var express = require('express');