2

我想在 PLESK-ONYX 服务器上部署一个小型 node.js 应用程序 - 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 内部帮助工具启动 Web 应用程序。但是,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';

    ^^^^^^^

怎么解决呢?

问题出在哪里?

提前谢谢你的帮助!

此致

马库斯


您好,在此期间我有新的发现...

我的问题似乎是 - 目前 PLESK 中最高可用的 node.js 版本是 12.4!

在 PLESK - 我必须使用 server.js-File 启动 node.js-App - 像这样:

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

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

我的 node.js-Version 是 V.12.4,所以我必须像这样使用 esm:

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

我怎样才能以正确的方式组合这两个文件?

非常感谢你的帮助!

这是“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 的启动命令可以在哪里编辑!

此致

马库斯

4

1 回答 1

0

要使用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
于 2021-02-09T12:15:21.523 回答