【问题标题】:How to get the path of the app with server.js如何使用 server.js 获取应用程序的路径
【发布时间】:2019-07-24 18:40:07
【问题描述】:

大家好,我目前正在对节点做出反应,我想用我的 server.js 运行我的应用程序,但是我不确定如何调用 app.js 或 index.js 的路径,有人会帮助我吗?

目前我有这个:

import express from 'express'

/* eslint-disable no-console */

const port = process.env.PORT || 3001
const app = express()

app.get('/', (req, res) => {
  try {
    res.send('hello world')
  } catch (e) {
    console.log(e)
  }

})

app.listen(port, err => {
  if (err) {
    console.error(err)
    process.exit(1)
  } else {
    console.log('Server listening: http://localhost/%s', port)
  }
})

【问题讨论】:

  • “调用app.js的路径”是什么意思?你想做什么?
  • 我正在尝试将我的应用程序放在我自己的端口上

标签: node.js reactjs


【解决方案1】:

这是假设您的节点文件夹结构中有一个 client 文件夹...通常您会 build 您的反应应用程序,然后将内容放在那里。只要相同,命名并不重要。

app.use(express.static('client'));
const path = require('path');
app.get('*', (req, res) => {
  res.sendFile(path.resolve(__dirname, 'client', 'index.html'));
});

通常您只需要在生产环境中执行此操作。 对于开发,请查看React 文档Proxy API requests

如果您想在节点环境中运行您的开发版本,您需要执行以下操作..... 您的 client 文件夹将基本上包含您的 react app NOT built 应用程序。 上面的节点代码要么注释掉,要么在其周围加上if 语句。 例如if (process.env.NODE_ENV === 'production') ...

您需要安装 (npm/yarn) 类似 concurrently 的东西 concurrently

最后,您需要更改您的 package.json 脚本以反映类似的内容。

"scripts": {
    "start": "node index.js",
    "server": "nodemon index.js",
    "client": "npm run start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""}

在我个人看来,我认为这是一个很大的努力去没有太大的好处(其他只需要做 1 个npm start 等...),而不是内置的 create-react-app 可以做什么你。

【讨论】:

  • 谢谢,我试试,但是我必须用NPM下载“路径”模块吗?
  • 不,你只需要它,我相信它是一个核心模块
  • 'client' 是我的文件名吗?还是只是我们选择的名字?
  • 不,正如我所说,client 只是您可以用于构建文件夹的任意名称。通常,您要做的是在您的 react 应用程序上进行生产,您将执行 npm build 这将输出一个文件夹 (build),这将是您使用的文件夹或从中复制内容并输入您的 client文件夹
  • 我在回答中添加了一些额外的细节。请阅读。您正在尝试做的事情只会有效地用于生产构建。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 2016-09-09
  • 1970-01-01
  • 2012-07-05
  • 2014-11-07
  • 2011-05-16
相关资源
最近更新 更多