Статическое обслуживание файлов JS, включая модули узлов в приложении Node с Express и программирование клиента и сервера. - PullRequest
0 голосов
/ 07 октября 2018

Я довольно новичок в веб-разработке, и у меня возникла проблема с требованием определенных узловых модулей в моем приложении Express.Мне нужно получить доступ к определенному коду, но у меня возникают сложности со сложностями Node, и я не могу на всю жизнь получить доступ к node_modules, где мне это необходимо.

Я пытаюсь использовать облачный видеоплеер из установленных мной модулей node_modules.Я включил ссылки на пути в файл index.html, который подается из htmlRoutes.js, и я прямо указывал, что express должен статически загружать эти файлы в документ, но приложение не распознает эти пути как допустимые.Я пытался запросить эти модули в отдельных файлах JS, обслуживаемых из общей папки, но это также неверно.Из того, что я понимаю, это может быть моя собственная путаница в программировании на стороне клиента и на стороне сервера, но я не знаю, как решить эту проблему, и какие ресурсы я должен прочитать, чтобы это сделать.

Любая помощь будет оценена.Вот как выглядит мой сервер:

const express = require("express");
const path = require('path');
const bodyParser = require('body-parser');
const baguetteBox = require('baguettebox.js');
const cloudinary = require('cloudinary');
const axios = require("axios");

const app = express();

// Define a port to listen for incoming requests

// Sets an initial port. We"ll use this later in our listener
const PORT = process.env.PORT || 8181;

app.use(express.static('public'));
//static routes that attempts to fetch scripts from node_modules without revealing inner directory structure
app.use(express.static(__dirname + '/node_modules/lodash'));
app.use(express.static(__dirname + '/node_modules/cloudinary'));
app.use(express.static(__dirname + '/node_modules/cloudinary-core'));
app.use(express.static(__dirname + '/node_modules/cloudinary-video-player'));


// Sets up the Express app to handle data parsing
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

//routes
require("./routes/htmlRoutes.js")(app);
// require("./routes/apiRoutes.js")(app);

  //configure cloudinary api calls
// cloudinary.config({
//   cloud_name: 'name',
//   api_key: 'key',
//   api_secret: 'secret',
//   secure: true
// })

// Start our server so that it can begin listening to client requests.
app.listen(PORT, function() {

  // Log (server-side) when our server has started
  console.log("App listening on: http://localhost:" + PORT);
});

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Если вам нужен, например, lodash, вам не нужно обращаться к node_modules / lodash.Просто импортируйте lodash, объявив:

const lodash = require('lodash');

И теперь вы можете использовать lodash в файле, который объявляете lodash.

0 голосов
/ 07 октября 2018

Я никогда не видел, чтобы пакеты node_modules служили в качестве статических файлов напрямую, сказав, что я буду агностиком относиться к этой работе.

Альтернативный способ решения этой проблемы - использовать такой пакет, как Webpack иобслуживайте его с помощью Express.js

Причина этого заключается в том, что даже будучи JavaScript, Webpack скомпилирует код в нечто, интерпретируемое браузером, чего во многих случаях вы не найдете в пакете Node.js.

...