Конечно, вопрос новичка, но я был бы признателен за любую помощь, так как я полностью застрял (т.е. я пробовал все, что мог найти, без успеха). Когда я пытаюсь использовать JQuery, я получаю «ReferenceError: $ не определено». Моя структура проекта:
bin/www public javascripts stylesheets routes index.js views layout.pug ... app.js
layout.pug, где я пытаюсь загрузить jquery CDN:
doctype html
html(lang='en')
head
meta(charset='utf-8')
title= title
//- bootstrap CSS
link(rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'
integrity='sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u' crossorigin='anonymous')
link(rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css')
//- my Styling CSS
link(rel='stylesheet', href='/stylesheets/style.css')
body
block content
script(src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js")
script(src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity = "sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin = "anonymous")
script(src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'
integrity='sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa' crossorigin='anonymous')
script(src='/javascripts/jquery-3.3.1.js')
script(src='routes/index.js')
Мой файл index.js следующий:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res, next) {
res.render('index', { title: 'Express' });
});
$(function () {
alert('JavaScript Loaded!');
});
module.exports = router;
Наконец, в моем файле app.js есть несколько важных строк:
const indexRouter = require('./routes/index');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
// Set Static Paths
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
Кто-нибудь может мне помочь?
Да, есть, но проблема не в этом. Поскольку я использую app.use(express.static(path.join(__dirname, 'public'))); без косой черты после публичного, мне нужно включить его до javascripts. Более того, я хотел, чтобы jquery загружался через CDN, эта строка почти избыточна, просто чтобы убедиться, что jQuery загружается.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Думаю, вы не знаете, что server-side-rendering vs client-side-rendering.
Expressjs - это server-side-rendering. поэтому вы не вызываете jQuery в index.js
Если вы вызываете jQuery, вы делаете это. var $ = require('jQuery');
ссылка: https://www.npmjs.com/package/jQuery#nodejs
Ты прав, я новичок. Но в этом случае index.js (где я использую $) является клиентским, а не app.js, который является серверным.
Я думал, что index.js (где я использую $) был клиентским, но я все испортил. Я думаю, ты это решил. Спасибо
это трудная вещь. Рекомендую прочитать эту страницу. просто ваш сервер выполняет nodejs, а браузер клиента выполняет html-страницу. openclassrooms.com/en/courses/…
пробовали ли вы удалить сценарий косой черты (src = '/ javascripts / jquery-3.3.1.js') перед javascripts