我创建了一个启用 CORS 的简单节点服务器。但是当我做 node server.js 时,它会抛出错误

Posted

技术标签:

【中文标题】我创建了一个启用 CORS 的简单节点服务器。但是当我做 node server.js 时,它会抛出错误【英文标题】:I have created a simple node server with CORS enabled. But when I do node server.js, it's throwing error 【发布时间】:2019-02-09 04:52:31 【问题描述】:
const express = require('express');

const cors = require('cors');

const app = express();



app.use(cors());

app.get('https://jsonplaceholder.typicode.com/todos/1', (req, res) => 
  res.send( express: 'Hello From Express' );
);

const port = 3030;
app.listen(port, () => console.log(`Server running on port$port`));

我创建了一个启用 CORS 的简单节点服务器。但是当我这样做时,node server.js 会抛出一个特定的错误,我无法弄清楚。

internal/modules/cjs/loader.js:596
    throw err;
    ^

Error: Cannot find module 'C:\Users\Cnetric\Desktop\reactonline\server.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:594:15)
    at Function.Module._load (internal/modules/cjs/loader.js:520:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:744:10)
    at startup (internal/bootstrap/node.js:238:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:572:3)

有人可以帮我解决这个问题吗?我无法排除故障。我是节点新手,无法弄清楚。

我的文件夹结构

reactonline-> src, public, node_modules, package.

然后在src文件夹下,我所有的文件都在那里。

【问题讨论】:

你的起点文件名是什么?你的 reactonline 文件夹中是否存在 server.js 文件? @SvetoslavPetrov 是的,我附上了它的截图...... @Think-Twice 是的,我已经在帖子中包含了文件夹结构,我现在已经对其进行了编辑。 您的 server.js 在 src 文件夹中,而您的 package.json 在 reactonline 文件夹中,那么它是如何工作的。您需要将 server.js 文件移动到根文件夹,即 reactonline @Think-Twice 非常感谢您 【参考方案1】:

如 cmets 中所述。您的 package.json 文件位于根文件夹中,而 server.js 位于 src 文件夹中,这是问题所在。

如果您在 server.js 中包含任何文件,请将您的 server.js 文件移动到根文件夹下,即 reactonline 并解决路径问题。现在可以使用了

关于从外部源获取数据,您需要使用 node-rest-client 库。 Check here 了解更多图书馆详情

先安装

npm install -s node-rest-client

那么这里

const express = require('express');

const cors = require('cors');
const Client = require('node-rest-client').Client;//import it here
const app = express();

app.use(cors());

app.get('/', (req, res) => 

   var client = new Client();

   // direct way
   client.get("https://jsonplaceholder.typicode.com/todos/1", (data, response) => 
    res.send( express: 'Hello From Express', data: data );
   );
);

const port = 3030;
app.listen(port, () => console.log(`Server running on port$port`));

【讨论】:

是的,它现在正在工作....但是我无法从 url 获取数据.... 与任何外部 URL 对话以获取使用 node-rest-client 库所需的数据 我将如何在我当前的服务器中配置它。你能给我一个关于这个的见解吗? 更新了我的答案检查【参考方案2】:

它试图在错误的位置找到文件:

'C:\Users\Cnetric\Desktop\reactonline\server.js'

其实是在:

'C:\Users\Cnetric\Desktop\reactonline\src\server.js'

您应该在正确的文件夹中运行 node 命令。

【讨论】:

以上是关于我创建了一个启用 CORS 的简单节点服务器。但是当我做 node server.js 时,它会抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs API:默认情况下似乎启用了 CORS

是否可以使用 NancyFX 启用 CORS?

为具有凭据支持的 tomcat 应用程序启用 CORS

在 asp.net core 中启用 CORS

C# Net Core:在 API 中启用 Cors 后,仍处于 CORS 策略阻止状态

在 React 应用中启用 CORS