просмотр сайта на http://localhost вместо файла://, используя node.js

Я учусь использовать node.js.

Сайт выглядит нормально при запуске из file:///C:/.../myfolder/index.html У меня есть файлы jquery и bootstrap в каталогах myfolder/css/ и myfolder/js.

но когда я запускаю node index.js и перехожу к localhost:3000, эти файлы css и js не могут быть найдены.

Вот что находится в моем файле index.html:

 <link href="/css/bootstrap.min.css" rel="stylesheet">
 <script src="/js/bootstrap.min.js"></script>
 <script src="/js/jquery.js"></script>
 <script src="/socket.io/socket.io.js"></script>

Есть ли в nodejs какая-то папка, в которой я должен хранить эти файлы? Или мне нужно поместить в index.js некоторый код, который импортирует все файлы css и js?


person flyinglizard    schedule 08.11.2014    source источник


Ответы (4)


Вы можете просто следовать инструкциям по быстрому запуску Express.js здесь:

https://www.npmjs.org/package/express

Затем перейдите к http://localhost:3000 для проверки

Вы можете использовать текстовый редактор Atom или Brackets и поместить свои файлы в папку public и ссылаться на них.

http://atom.io
http://brackets.io

По умолчанию Express использует механизм шаблонов под названием Jade. Вы можете посмотреть здесь, чтобы работать с этим:

http://jade-lang.com/

Использование HTML в Express вместо Jade

Node.js + Express без использования Jade

Удачи!

person Timmerz    schedule 08.11.2014
comment
Ближайший ответ! Просмотрев экспресс-документацию, я обнаружил, что, добавив строку app.use(express.static(__dirname + '/public')); где мои папки css и js находятся в общей папке, это работает. - person flyinglizard; 09.11.2014

Ваш локальный хост начинается в определенном каталоге на вашем компьютере. Если вы используете Xampp, вы должны поместить все файлы своего сервера в C:\xampp\htdocs\, чтобы получить к ним доступ через URL-адрес вашего локального хоста. Некоторые другие серверы используют папку с именем «www».

Найдите корневой путь вашего сервера и поместите туда свои файлы. Или создайте символическую ссылку из корня вашего сервера на ваши файлы.

person sampie777    schedule 08.11.2014

Вам нужен модуль пути?

var path = require('path');

Лучше всего создать каталог public для хранения ваших файлов.

public/index.html
public/css/style.css
public/js/scripts.js
person Tim    schedule 08.11.2014

Причина, по которой вы не можете получить доступ к localhost:3000/folder/file, заключается в том, что localhost:port — это всего лишь виртуальный порт. Нет такого каталога с именем localhost:3000/css/ или localhost:3000/js.

Чтобы это исправить, вам нужно использовать экспресс-модуль для настройки корневого каталога, из которого будут обслуживаться статические ресурсы.

По сути, вам нужно добавить следующий код:

var express=require('express');
var app=express();
var path=require('path');    
app.use(express.static(path.join(__dirname,'public')));

и ваш каталог статических файлов будет currentWorkingDirectory/public/, который содержит все ваши активы.

В вашем коде, чтобы связать любой исходный файл,

href='/fileName.extention'

Вот ссылка на документацию express-static-files

person Janice Zhong    schedule 08.09.2018