Я запускаю сервер Node.js вместе с интерфейсом Angular. Одна из зависимостей Angular, которые я использую, требует, чтобы я импортировал javascript файл на мою страницу html под именем swing.js
. Однако, когда я пытаюсь это сделать, он отправляет требуемый файл в качестве HTTP-запроса на сервер, в результате чего запросы выглядят следующим образом:
Http://Localhost: 3000/главная /Me/приложение /node_modules/угловой распашные/расстояние /swing.js
Очевидно, что это выглядит как 404. В качестве альтернативы я попытался изменить
<script src="/home/me/app/node_modules/angular-swing/dist/swing.js"></script>
в
<script src="swing.js"></script>
а затем на стороне сервера, делая:
app.get('swing.js', function(req, res){
res.sendFile('home/me/app/node_modules/angular-swing/dist/swing.js');
});
Это работает немного больше, но тогда файл работает неправильно, поскольку я предполагаю, что он больше не находится в среде npm, в которой он должен быть. Я пробовал несколько итераций изменения
<script src="/home/me/app/node_modules/angular-swing/dist/swing.js"></script>
в то, что использует периоды (.) для представления более относительных путей, но это тоже не работает. В целом, я очень застрял и буду признателен за любую проницательность. Если он используется, я также использую:
app.use(express.static(__dirname+'/public'));
Внесение комментариев в ответ...
node.js по умолчанию не обслуживает файлы, поэтому любые файлы сценариев, которые вам нужно отправить с вашего сервера клиенту по запросу, должны иметь явный маршрут для их обработки или им нужен общий маршрут, который знает, как обрабатывать все запрошенные файлы сценариев.
swing.js
в клиенте не является частью какой-либо "среды NPM". Он запускает браузер в этот момент, а не в какой-либо среде НПМ. Возможно, что swing.js сам нуждается в некоторых других сценариях или ресурсах, которые также нуждаются в маршрутах, и почему он не работает после того, как вы сделаете для него явный маршрут. Вероятно, вы можете проверить конкретные ошибки в консоли, чтобы дать вам понять, почему он не работает.
Вы также можете прочитать следующее: Как включить скрипты, находящиеся внутри папки node_modules?
swing.js
в клиенте не является частью какой-либо «среды NPM». В этот момент он запускает браузер, а не в любой среде NPM. Возможно, что для самого swing.js нужны другие скрипты или ресурсы, которым также нужны маршруты, и поэтому он не работает после того, как вы сделали для него явный маршрут.