Как вызвать внешнюю функцию JavaScript в файле pug? - PullRequest
0 голосов
/ 02 апреля 2020

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я действительно новичок в мопсе и express. Извините, если это очевидно, я просто нигде не могу найти ответ

В файле pug я пытаюсь найти кнопку, которая вызывает функцию delete(), которая находится в helperFuncs. js. Функция delete() должна запускаться на стороне сервера и редактировать файл (я знаю, что сама функция работает так, как задумано).

Мой код выглядит примерно так:

index. js:

const helperFuncs = require('./lib/helperFuncs');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');

app.use(bodyParser.json());
app.use(cors());

app.get('/', function(req, res) {
    let posts = helperFuncs.getAllPosts();
    res.render('index', {
        posts,
        helperFuncs
    });
})

index.pug:

doctype html
style
    include ./style.css
html
    head
        title MyApp
    body
        h1 History
        .posts-container
            each post, index in posts
                .post(item=post, index=index)
                    button(type='button' onclick='helperFuncs.delete(post.id)')
                    p.text #{post.text}

helperFuncs. js:

module.exports = {
    delete: function(id) {
        console.log('Deleting a post...')
        let newHistory = history.filter(obj => {
            return obj.id !== id;
        })
        fs.writeFileSync('./server/data/history.json', JSON.stringify(newHistory), 'utf8');
    }
};

Всякий раз, когда я нажимаю кнопку, я получаю сообщение об ошибке Uncaught ReferenceError: helperFuncs is not defined

Пожалуйста, помогите.

1 Ответ

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

Вам необходимо указать helperFuncs. js в файле индекса. js и зарегистрировать функцию в индексе. js через app.locals.helperFuncs

Ваш индекс. js должен иметь

const helperFuncs = require("/path/to/helperFuncs");

// assuming the express app is initialized
app.locals.helperFuncsDelete = helperFuncs.delete

А затем в файле мопса вы можете назвать его

h1= helperFuncsDelete("param1", "param2")

Проверить этот репозиторий , я использовал момент js в мопсе файл

...