Функция onclick не работает в node js - PullRequest
0 голосов
/ 10 апреля 2020

Node.js прекратить работу javascript код

структура моего файла

приложение. js

index. html

index. js

Но если я запускаю его без узла, он работает и выдает предупреждение

приложение. js

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

const PORT=80; 

fs.readFile('./index.html', function (err, html) {
    if (err) throw err;    
    http.createServer(function(request, response) {  
console.log(request.addListener.name);
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(PORT);
    console.log(`Server running at http://127.0.0.1/`);
});     

индекс. html

<html>
<head>
<script src="index.js"></script>
</head>
<body>
<button onclick="start()">onclick</button>
</body>
</html>

индекс. js

function start(){
alert('start');
}

кто-нибудь, пожалуйста, предложите мне решение, как я могу вызвать функцию Javascript при работе на узле, нажав кнопку или изменив входные данные.

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Ваш сервер обслуживает только index.html Если вы заглянете в Вкладка "Сеть" (В инспекторе кода) индекса. js Запрос не выполнен. Вам необходимо отправить файл индекса. js, когда он потребуется , Если вы просто используете Nodejs для этого. Я думаю, что лучше всего использовать expressjs это действительно просто.

0 голосов
/ 10 апреля 2020

Минимальный пример приведен ниже. Я рекомендую использовать third-party библиотеки, такие как express - js для создания сервера.

const http = require("http");
const fs = require("fs");
const path = require("path");
const PORT = 8080;
http
  .createServer(({ url }, response) => {
    response.setHeader("Content-Type", "text/html");
    if (url == "/") fs.createReadStream("./index.html").pipe(response);
    else {
      const filePath = path.join(__dirname, url);
      const stats = fs.existsSync(filePath);
      if (stats) fs.createReadStream(filePath).pipe(response);
    }
  })
  .listen(PORT);
...