узел js: почему module.exports = tesdf () из require выполняется только один раз, внутри запроса get - PullRequest
0 голосов
/ 20 ноября 2018

index.js

'use strict'

const express = require('express')
const app = express()

app.get('/', (req, res, next) => {
       require('./test.js') // after repeated request is not executed
       console.log("test")//after repeated request is  executed
       next();
    })

app.listen(8097)

test.js

function tesdf(){console.log("Gtest test", ind++); }
module.exports = tesdf()

Как заставить функцию вызываться снова.спасибо.

Ответы [ 4 ]

0 голосов
/ 20 ноября 2018

test.js

function tesdf() {
    console.log("Gtest test", ind++); 
}
module.exports = tesdf;

index.js

var test = require('/path/to/test.js');
test();
0 голосов
/ 20 ноября 2018

Экспорт модуля в NodeJS превращает его в одноэлементный, поэтому возможность сделать его не одноэлементным - создать другой экземпляр:

test.js

function tesdf(){
    console.log("Gtest test", ind++); 
}

module.exports = tesdf;

index.js

new (require('./test.js'))();
0 голосов
/ 20 ноября 2018

Попробуйте экспортировать функцию без запуска, например, в вашем случае:

module.export = testdf

Перед тем, как экспортировать таким образом, импортируйте переменную и запустите.

const testdf = require('./test.js')
testdf()
0 голосов
/ 20 ноября 2018

Когда вы экспортируете файл, вы экспортируете функцию, классы или переменные.Здесь вы экспортируете результат функции tesdf().Чтобы решить эту проблему, просто экспортируйте его следующим образом:

function tesdf(){console.log("Gtest test", ind++); }

module.exports = tesdf

Также вы не должны использовать required('./test.js') внутри запроса get, потому что каждый раз, когда какой-либо клиентский запрос для этой конечной точки, метод будет загружать файл.например,

let test = require('./test.js');
app.get('/', (req, res, next) => {
       test();//Call the method
       console.log("test")//after repeated request is  executed
       next();
    })
...