无法访问 Node.js 中的其他文件

Posted

技术标签:

【中文标题】无法访问 Node.js 中的其他文件【英文标题】:Cant access other files in Node.js 【发布时间】:2021-06-17 11:30:46 【问题描述】:

注意: Stack Overflow 上有相同的问题,但这不是重复的。请仔细阅读。

我刚刚开始在 Node 上使用 Socket.io,在我的 html 文件中,我无法访问其他文件,例如图片。我在 Stack Overflow 上看到了这个问题的答案,但没有一个对我有帮助。

我正在向客户端提供一个 HTML 文件,我的 HTML 文件位于 /client/display/index.html

这是我尝试过的:app.use(express.static(path.join(__dirname, 'public'))); 以及它的变体(包括文件夹名称而不是公共文件夹名称),我需要在文件顶部的路径,我收到此错误:

ReferenceError: express is not defined
    at /home/runner/Buzzer/index.js:6:9
    at Script.runInContext (vm.js:130:18)
    at Object.<anonymous> (/run_dir/interp.js:209:20)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
    at internal/main/run_main_module.js:17:47

我已经安装了我需要的一切。这是我添加的导致错误的内容:

const path = require('path');
app.use(express.static(path.join(__dirname, '/')));

以下是我的节点文件中的一些其他重要内容:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

如果有人可以帮助我,我将不胜感激。

[编辑]

好像我在文件夹里放什么东西,js文件就找不到了。

【问题讨论】:

你需要使用 express 编辑:作为 express 或者你必须使用你需要的名称作为 .static 但我确实在第一行写了var app = require('express')();,如您所见。 需要和express.static同名,所以“app.static”或者需要express 你能回答问题还是说清楚点?我刚刚开始节点。 另外,如果需要,为什么最后会有括号?有括号和不带括号有什么区别? 【参考方案1】:

正如您在错误中看到的:'ReferenceError: express is not defined',您需要 express 调用静态方法,试试这个:

var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);

const path = require('path');
app.use(express.static(path.join(__dirname, '/'));

【讨论】:

【参考方案2】:

好的,我意识到('express')()('express') 不同。

我补充说:

var express = require('express');

const path = require('path');
app.use(express.static(path.join(__dirname, '/')));

这解决了我的问题。

【讨论】:

就像我的回答一样,恭喜 那么var app = require('express')()var express = require('express');app = express(); 的快捷方式吗?

以上是关于无法访问 Node.js 中的其他文件的主要内容,如果未能解决你的问题,请参考以下文章

在Node js中的功能之外无法访问外部IP

无法访问我的站点中的链接(复制和粘贴):Node.js - Express.js - Webpack - Vue.js - 历史模式

无法在 node.js 或 react 中访问 Gitlab env 变量

无法在 node.js 中交换访问令牌的代码。 Mailchimp API

跨域访问场景无法发送认证头

无法使用 Node.js 和 AWS EC2 访问 mysql 服务器