2016-03-06 6 views
-1

У меня есть 3 файлов, один простой .html:Модули node.js не работают

<!DOCTYPE html> 
<html> 
<head> 
    <title>meh server</title> 
</head> 

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

'server.js':

module.exports.proto = function() { 
     alert("Working function"); 
    } 
}; 

и 'index.js':

var server = require('./server'); 

server.proto(); 

Все в той же папке. У меня есть node.js, установленный на моем ПК и набранный на windows cmd '' npm install nodejs '' в папке из 3-х файлов. Я не могу получить предупреждение от server.js, и я не знаю, почему.

ответ

0

Прежде всего, у вас есть синтаксическая ошибка в файле server.js.

module.exports.proto = function() { 
    alert("Working function"); 
}; 

Во-вторых, у вас нет функции «alert» в узле. Вы можете написать console.log вместо

module.exports.proto = function() { 
     console.log("Working function"); 
    }; 

Затем запустите index.js из командной строки

node index.js 

Вы можете увидеть сообщение «Работа функции» в командной строке.

Открытие вашего html-файла в вашем браузере не будет работать одинаково. Вам действительно нужно понимать узел :)

EDIT: index.js

var server = require('./server'); 

var http = require('http'); 
fs = require('fs'); 

http.createServer(function(req, res) { 
    server.proto(); 
    fs.readFile('index.html', 'binary', function(err, file) { 
     if(err) { 
     res.writeHead(500, {"Content-Type": "text/plain"}); 
     res.write(err + "\n"); 
     res.end(); 
     return; 
     } 

     res.writeHead(200, {"Content-Type": "text/html"}); 
     res.write(file, "binary"); 
     res.end(); 
     }); 
}).listen(3000, function() { 
    console.log("Server started"); 
}); 

Теперь, если вы запустите index.js из командной строки перейдите на локальный хост: 3000 в вашем браузере, вы можете видеть, как он работает так, как вы хотели.

0

Oh!alert ничего не узнает node.js, это часть браузера.

Вместо использования alert вы должны войти ваше сообщение, она также кажется, что вы либо не скопировали весь код или это действительно ошибка синтаксиса, так это исправить как:

module.exports.proto = function() { 
    console.log("Working function"); 
} 

Теперь вы можете использовать ваша IDE для запуска index.js или goto любой оболочки и стрелять node index, он будет запускать код узла.

Во-вторых Если вы хотите, чтобы ваш сервер node.js отправить или открытый html файл в браузере Follow This Tutorial

+0

это сработало для вас? –

+0

Да, так и было. thxxx –

+0

отлично, [узел-чит] (https://github.com/zishon89us/node-cheat) –

0

Ну, установка Node.js является началом, но кажется, что вы смущены о том, что node.js есть. Узел - это время выполнения. Да, он построен поверх V8 (такая же JavaScript-версия JavaScript в Google Chrome), но нет DOM, ни одного из API браузера и абсолютно никакой необходимости в браузере. Итак, alert не существует в узле. Я рекомендую ознакомиться с API docs.

Как уже было сказано, вы запускаете программу узла, выполняя двоичный файл node и передавая файл в качестве аргумента (есть реплика и другие параметры), как если бы вы запускали программу python или ruby. В вашем случае:

node index.js 
1

Прежде всего, Node.js - это среда исполнения, нет DOM. Поэтому в узле не указано «предупреждение».

Во-вторых, вам нужно запустить программу узла, выполнив узел двоичного & проходящее имя файла в качестве аргумента командной строки, как

node your_file_name.js 

Для получения ответа, как в командной строке & в браузере необходимо выполнить следующее:

Командная строка:

файл: server.js

module.exports.proto = function() { 
    console.log("Working function"); 
} 

файл: index.js

var server = require("./server"); 
server.proto(); 

теперь работают следующую команду в командной строке:

node index.js 

вы увидите желаемый результат в командной строке.

Browser:

файл: server.js

module.exports.proto = function() { 
    return "Working function"; 
} 

файл: index.js

var server = require("./server"); 

var httpServer = require("http"); 
httpServer.createServer(function (request, response) { 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    response.write(server.proto()); 
    response.end(); 
}). 
listen(3000, function() { 
    console.log("server listening on 3000"); 
}); 

теперь работают следующую команду в командной строке:

node index.js 

вы увидит следующее в mmand линия:

server listening on 3000 

теперь иди в браузер & попал следующее:

http://localhost:3000/ 

Вы увидите свой желаемый результат в вашем браузере.

*** Для получения дополнительной информации я бы рекомендовал изучить «http» API узла. https://nodejs.org/api/http.html

Спасибо. Надеюсь, это поможет ...