如何在生产中运行 node.js REST API 应用程序

好的,所以马上我就觉得问这个问题有点愚蠢,但我对 node.js 应用程序有点陌生,所以请耐心等待。我已经在 node.js 中编写了这个 REST API,它在我的本地机器上运行得很好。但是,当我使用 webpack 构建它时,我不太确定它应该如何实际运行。在本地,我有一个使用 Express 文件的 server.js,我开始使用 node.js 文件。但是我将如何运行构建版本?我确定答案很明显,我只是没有看到。


我的目标是能够在我的共享托管解决方案的子域上运行它,所以我有类似https://myapi.mydomain.com/getAListOfSomething/的示例端点的东西


所以底线 - 我想使用 Webpack 来构建我的应用程序,然后将它部署到某个地方并像普通 API 一样使用它。我只是不知道该怎么做。使用 React 应用程序之类的东西,这对我来说是完全显而易见的(一个 index.html 文件,我的应用程序带有脚本标签,非常简单)但是对于这样的东西,我迷路了。


所以这里有一些代码......


服务端JS


const routes = require('./routes/appRoutes.js');

const express = require('express');

const cors = require('cors');


process.env.NODE_ENV = process.env.NODE_ENV || 'development';

const envPath = process.env.NODE_ENV !== 'production' ? `.env.${process.env.NODE_ENV}` : '.env';

const config = require('dotenv').config({path: envPath});


 bodyParser = require('body-parser');

 app = express();

 port = process.env.PORT || 3001;

 app.use(cors());

 app.listen(port);

 console.log(process.env.APP_NAME + ' started on port ' + port +' (yay!)');


 app.use(bodyParser.urlencoded({ extended: true }));

 app.use(bodyParser.json());


 routes(app); //register the route

* WEBPACK.CONFIG.JS *


const path = require('path');

const ExtractTextPlugin = require('extract-text-webpack-plugin');

const webpack = require('webpack');

const nodeExternals = require('webpack-node-externals');

process.env.NODE_ENV = process.env.NODE_ENV || 'development';


const envPath = process.env.NODE_ENV !== 'production' ? `.env.${process.env.NODE_ENV}` : '.env';

const config = require('dotenv').config({path: envPath});



module.exports = (env) => {

    const isProduction = env==='production';


    return {

        entry: './routes/appRoutes.js',

        output: {

            path: path.join(__dirname,'public','dist'),

            filename: 'bundle.js'

        },


九州编程
浏览 131回答 2
2回答

拉丁的传说

在您正在构建的 webpack 配置中,public/dist/应该有一个bundle.js可以运行。然后简单地node bundle.js对于节点项目来说,这似乎是一个奇怪的位置,但很容易改变。

RISEBY

鉴于部署应用程序的方法有很多种,这个问题很难回答。有谷歌云平台、亚马逊网络服务、微软 Azure、ZEIT Now、Heroku 等实体。所有这些都可以为您购买的域添加端点和证书。下面是几个例子:Amazon Web Services 具有 S3 存储桶,您可以在其中捆绑应用程序并将静态输出放入存储桶,配置应用程序的可访问性等等。( https://medium.com/codebase/using-aws-s3-buckets-in-a-nodejs-app-74da2fc547a6 , https://docs.aws.amazon.com/s3/index.html )Google Cloud Platform 具有 App Engine,它相对简单地设置和部署您的应用程序。话虽如此,GCP 非常强大,对于初学者来说可能会令人生畏。( https://cloud.google.com/appengine/docs/nodejs/ ) 还有用于 API 管理的 GCP 端点。Heroku 很容易让你的应用在几分钟内被外界访问。https://devcenter.heroku.com/articles/getting-started-with-nodejsZeit Now 提供了一个零配置选项来部署您的应用程序,这可能是一个很好的起点。( https://zeit.co/ )然后,您可以使用它配置的任何端点来访问您的应用程序、API 等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript