2014-08-06 5 views
3

я доступ к script.js и libs.js в index.html, как это:Как я могу добавить файл JavaScript в приложении node.js?

<body style='margin:0px' > 
<canvas id='your_canvas' 
     style='position: absolute; background-color: black;'></canvas> 

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script type="text/javascript" src="/libs.js"></script> 
<script type="text/javascript" src="/script.js"></script> 
<script src="/socket.io/socket.io.js"></script> 
<script> 
    jQuery(function($){ 

     main(); //this function is inside of script.js 

    }); 
</script> 

но .js файлы не могут быть доступны и показывая сообщение об ошибке:

1) GET script.js 404 (Не найдено) localhost /: 12.
2) GET libs.js 404 (не найдено) localhost /: 11.
3) Uncaught ReferenceError: main не определен (индекс): 17.

где я ошибаюсь и как я могу включить эти два файла JavaScript, используя node.js?

мои app.js является:

var express = require("express"), 
app = express(), 
server = require("http").createServer(app), 
io = require("socket.io").listen(server); 
server.listen(8000); 

app.get('/', function(req, res){ 
res.sendfile(__dirname + '/index.html'); 
}); 

app.use(express.static(__dirname + '/public/script.js')); 
app.use(express.static(__dirname + '/public/libs.js')); 

io.sockets.on('connection', function(socket) { 
    socket.on('send coordinates',function(data){ 
    io.sockets.emit('coordinates', data); 
    }); 

});

, а затем у меня есть файлы script.js и libs.js.

+0

Вы используете экспресс? вы настраивали статический ресурс? –

+0

на самом деле я совершенно новичок в этих понятиях, и я не использовал статический ресурс .. пожалуйста, просветите меня abt it .. @MohitArora – CODeeerrrrrrrr

+0

neelsg уже опубликовал ответ об этом, а public - это имя папки, где есть файлы js. –

ответ

2

Вам необходимо фактически обслуживать эти файлы, если вы хотите, чтобы они были доступны. Вы не можете просто включить их в свой каталог проекта. Если вы используете Express, вы можете назначить статический каталог файлов, как это:

app.use(express.static(__dirname + '/public')); 

Вы также можете использовать node-static или даже создать обработчик для каждого файла ...

Используя экспресс, ваш код должен выглядеть что-то вроде этого (не проверено):

var express = require("express"); 
var app = express(); 
app.server = require('http').createServer(app); 
var io = require("socket.io").listen(app.server); 

app.get('/', function(req, res){ 
    res.sendfile(__dirname + '/public/index.html'); // I would move this file to public 
}); 

app.use(express.static(__dirname + '/public')); 

io.sockets.on('connection', function(socket) { 
    socket.on('send coordinates',function(data){ 
     io.sockets.emit('coordinates', data); 
    }); 
}); 

app.server.listen(8000); 
+0

thanx много ... я попробую ваше предложение и обновит вас, если это сработает .. :) – CODeeerrrrrrrr

+0

и у вас использовали '/ public' здесь ..? – CODeeerrrrrrrr

+0

'/ public' - всего лишь предложение. Я настоятельно рекомендую вам создать подкаталог, например «/ public» или «/ static», чтобы сохранить весь ваш статический файл. Если вы поделитесь каталогом проекта статически, это будет эпическая ошибка безопасности (пользователь может получить исходный код набрав в браузере что-то вроде 'http: // example.com/app.js' и следуйте логике к деталям подключения к базе данных). – neelsg

1

вы пытаетесь назвать:

<script> 
jQuery(function($){ 

    main(); //this function is inside of script.js 

}); 
</script> 

Если вам нужно, вы должны сохранить свой код в виде файла с именем script.js в корневом каталоге. Добавление javascript/jQuery между тегами в вашем html не нужно вызывать и запускаться автоматически.

Я бы посоветовал выложить свой сценарий следующим образом, я не понимаю, как вы его положили.

<script> 

var main = function() { 
    \\Your javascript/jQuery 
} 

$(document).ready(main); 

</script> 
+0

thanx Я думаю, вы поймали мою ошибку .. меняет код .. :) Можете ли вы просто опубликовать сообщение для моего сообщения ... я просто не хочу отрицательного .. это вопрос для меня .. я буду благодарен..thnx снова – CODeeerrrrrrrr

Смежные вопросы