Запуск node.exe из Django в Heroku - [Errno 2] Нет такого файла или каталога - PullRequest
0 голосов
/ 17 февраля 2020

Я развертываю Django проект Heroku. Мне нужно запустить node.exe, поэтому я скопировал node.exe в свою папку и развернул все их в Heroku.

Вот код, используемый с узлом в Django:

def extract_eval_unpacked(text):
    with io.open('temp.js','w',encoding='utf-8') as f:
        f.write(text)
    cmd = 'node.exe temp.js'
    process = subprocess.check_output(cmd,shell=False)
    if process:
        return process.decode()
    return None

Это работает локально, но при запуске на Heroku я получаю

[Errno 2] No such file or directory: 'node.exe temp.js': 'node.exe temp.js'

Я проверил на Heroku и вижу node.exe:

$ heroku run ls
Running ls on ⬢ extractmedia... up, run.4541 (Free)
1         client_id.txt   manage.py  Procfile.windows  runtime.txt  test1.py
1.py      gettingstarted  node.exe   README.md         staticfiles
app.json  hello           Procfile   requirements.txt  temp.js

Почему это не работает, и как я могу это исправить?

1 Ответ

0 голосов
/ 17 февраля 2020

Мне нужно запустить node.exe, поэтому я скопировал node.exe в свою папку и развернул все их в Heroku

Не делайте этого.

Heroku не запускает Windows, поэтому он не сможет выполнить двоичный файл Windows, например node.exe. Существует гораздо лучший способ добавить Node.js в ваше приложение: используйте несколько пакетов сборки .

  1. Установите основной пакет сборки:

    heroku buildpacks:set heroku/python
    
  2. Добавьте второй сборочный пакет для Node.js:

    heroku buildpacks:add --index 1 heroku/nodejs
    
  3. Проверьте свои сборочные пакеты и убедитесь, что Python приходит последний :

    heroku buildpacks
    
  4. Добавьте файл package.json в root вашего хранилища, например, запустив npm init или yarn init.

    Если вы зависите от любые указанные c Node.js библиотеки, включайте их как dependencies, например, через yarn add или npm install --save. Зафиксируйте этот файл.

  5. Обновите Python, чтобы он вызывал node вместо node.exe. Подтвердите это изменение.

  6. Развертывание.

Вы должны увидеть Node.js и все зависимости JavaScript будут установлены, а затем Python и все ваши Python зависимости. node должен быть доступен во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...