Ошибка при развертывании приложения node.js на сервере PLESK ONYX с Phusion Passenger V. 5.3.5

Я хочу развернуть небольшое приложение node.js на сервере PLESK-ONYX, на котором также работает Phusion_Passenger/5.3.5!

Происходит следующее:

Это работает здесь:

var express = require ('express');

var bodyParser = require ('body-parser');

Это не работает:

import express from 'express';

import bodyParser from 'body-parser';

При этом возникает следующая ошибка:

Сервер приложений Phusion Passenger попытался запустить веб-приложение с помощью внутреннего вспомогательного инструмента Passenger, называемого оболочкой. Но Passenger не смог запустить этот вспомогательный инструмент из-за внутренней ошибки.

The stdout/stderr output of the subprocess so far is:

/var/www/vhosts/hosting13.netcup.net/mem3-s3.hxxx-3.de/index.js:2

import express from 'express';

    ^^^^^^^

Как это решить?

В чем проблема?

Спасибо за вашу помощь заранее!

С наилучшими пожеланиями

Маркус


Привет, у меня есть новые выводы в то же время ...

моя проблема заключается в том, что самая доступная версия node.js в PLESK на данный момент - 12.4!

В PLESK — я должен запустить приложение node.js с файлом server.js — вот так:

const app = require('./index.mjs');
const http = require('http');

http.createServer(app).listen(process.env.PORT);

Моя версия node.js — V.12.4, поэтому я должен использовать esm следующим образом:

require = require("esm")(module/*, options*/)
module.exports = require("./index.js")

Как я могу правильно объединить 2 файла?

Спасибо большое за вашу помощь!

Вот содержимое package.json:

{
  "name": "mb-test-1",
  "version": "1.0.0",
  "description": "",
  "main": "index.mjs",
  "type": "module",
  "scripts": {
    "start": "nodemon -r esm index.mjs"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "dotenv":"^8.2.0",
    "esm":"^3.2.25",
    "express":"^4.17.1",
    "mongoose":"^5.9.29",
    "nodemon":"^2.0.7"
  }

}

Но к сожалению пока не нашел - где в PLESK команду запуска для node.js можно отредактировать!

С наилучшими пожеланиями

Маркус


person mbulm1    schedule 09.02.2021    source источник


Ответы (1)


для использования import from вы должны изменить тип в package.json на module, поэтому добавьте этот код в package.json

"type": "module"

Примечание. но файл экспорта отличается для commonjs и module.

по умолчанию тип commonjs , проверьте это статья

вы также можете использовать модуль babel, обновлять скрипты в package.json следующим образом

  "scripts": {
    "build": "rimraf dist/ && babel ./ --out-dir dist/ --ignore ./node_modules,./.babelrc,./package.json,./npm-debug.log --copy-files",
    "start": "npm run build && node dist/app.js"
  }

после этого для запуска проекта

npm start
person Mohammad Yaser Ahmadi    schedule 09.02.2021
comment
Здравствуйте, строка типа: модуль есть в package.json - но не работает! - person mbulm1; 10.02.2021