#javascript #json #node.js #npm
#javascript #json #node.js #нпм
Вопрос:
Я слежу за этим блогом, и в разделе 4 они показывают, как выполнить и запустить приложение. Все работает так, как описано.
Теперь я хотел бы поместить файл server.js , который является точкой входа в каталог под названием app. Однако команда npm start больше не находит это.
После некоторого поиска в Google я прочитал, что я должен вставить следующую строку в package.json, что я и сделал.
«начать»: «app/server.js «,
Проблема в том, что он все еще не может найти его, и я действительно не могу диагностировать проблему. Это потому, что точка входа должна находиться в корневом каталоге? Нужно ли размещать элемент start в определенном порядке в файле JSON? Я неправильно указываю путь (я пробовал «» и «/» и т.д.)?
Ответ №1:
Вы пропускаете вызов node:
"start": "node app/server.js",
Также не забудьте поместить приведенную выше строку в "scripts"
раздел package.json
.
"scripts": {
"start": "node app/server.js",
...
},
Комментарии:
1. Я уверен, что это одна из проблем, хе-хе. Теперь, когда это исправлено, я получаю ошибку missing script: start . Что еще это может быть? Или это вопрос для нового вопроса?
2. Одна вещь, которая может быть, это то, что
"start: "node app/server.js""
не находится в"scripts"
части вашего"package.json"
.3. Раздел глупых скриптов … Глупый элемент start … Глупые NodeJS … (неразличимое бормотание …) Потрясающе! Это сделало свое дело. Я новичок в этом, так что это почти забавно. Почти. 🙂
4. Нет проблем, приятель, мы все были там, рады помочь 🙂
5. Я взял на себя смелость вставить комментарии в ответ, чтобы сделать его из отличного совершенным.
Ответ №2:
Значение scripts.start
в вас package.json
указано как команда, которая будет выполняться при каждом вашем выполнении npm start
. Это означает, что любое значение, которое вы туда введете, будет запускаться непосредственно как исполняемый файл, так что это не просто вопрос указания пути.
Теперь у вас есть два варианта устранения вашей проблемы:
- Укажите полную команду:
node app/server.js
. - Создайте
app/server.js
исполняемый файл: установите его исполняемый бит (chmod x app/server.js
) и добавьте строку hashbang в файл (#!/usr/bin/env node
в качестве первой строки файла)
Ответ №3:
Клавиша ‘start’ в разделе скрипты package.json
описывает скрипт, который должен быть запущен npm при выполнении ‘npm start’.
...
"scripts": {
"start": "node app/server.js"
}
...
Однако некоторые серверы могут выбрать запуск приложения другими возможными способами. Имеет смысл также определить main
файл в качестве отправной точки вашего приложения. Это можно сделать следующим образом:
...
"main": "app/server.js",
"scripts": {
"start": "node app/server.js"
}
...
Комментарии:
1. Я думал, что main должен был указывать на index.js начальной страницы. Но, возможно, это упрощение, которым я обманут?
2. Это отправная точка приложения. В основном файл, который должен быть выполнен node для запуска приложения. Это может называться как угодно, включая index.js . Если «основной» ключ отсутствует, node ищет index.js файл по умолчанию в текущем рабочем каталоге для выполнения.
3. Очень полезно. Итак, у меня мог бы быть любой элемент в файле JSON? Например. это работало бы с «donkey»:»node bazinga/shazoo.js » если я выполню npm donkey ?
4. Нет. Таким образом, ‘start’ является особенным. Если бы у вас был
"donkey":"node bazinga/shazoo.js"
раздел скриптов в package.json, вы бы выполнили его какnpm run donkey
.