当前位置: 首页 > 知识库问答 >
问题:

如何正确地要求NodeJS中的文件?[副本]

伏砚
2023-03-14

我正在用NodeJS和ExpressJS建立一个区块链客户端-服务器网络。我让服务器成功运行,区块链自己运行。但是我在两者结合上遇到了一些问题。首先,这是我的项目结构:

node_p2p/
  node_modules/
    ...
  public/
    block.js
    client.js
    index.html
  package-lock.json
  package.json
  server.js

实际的问题,我有,我想包括block.jsclient.js文件,但我总是得到参考错误:要求是没有定义上线,我包含block.jsclient.js

var block = require('./block.js');

我已经尝试了以下变体,但是它们都产生了相同的错误(非常预期,因为要求目录是相对于文件调用要求的,但是我还是尝试了它们,以防万一):

var block = require('../public/block.js');
var block = require('../public/block');
var block = require('./public/block.js');
var block = require('./public/block');
var block = require('/public/block.js');
var block = require('/public/block');
var block = require('../block.js');
var block = require('../block');
var block = require('./block.js');
var block = require('./block');
var block = require('block.js');
var block = require('block');

这是块的代码。js

const SHA256 = require ('crypto-js/sha256');

class Block{
   constructor(...){...}
   ...
}

class Blockhain{
   constructor(...){...}
   ...
}

module.exports = {
  Blockchain: function(){
    return new Blockchain();
  }
}

其次,客户端。js

var socket = io.connect('http://localhost:3000');
var block = require('./block.js');

socket.on('client', showData);
socket.on('clientno', showData);
socket.on('newclient', showData);
function showData(data) {
  console.log(data);
}

var nascoin = new block.Blockchain();

最后,服务器。js

var express = require('express');

var app = express();
var server = app.listen(3000);

app.use(express.static('public'));

console.log("server running!");

var socket = require('socket.io');
var io = socket(server);

io.sockets.on('connection', newConnection);

var client_counter = 0;

function newConnection(socket) {
  console.log('new conn: ' + socket.id);
  client_counter++;

  socket.emit('client', 'your client name: ' + socket.id);
  socket.emit('clientno', 'you are client no.: ' + client_counter);
  socket.broadcast.emit('newclient', 'new client has joined the fray');
  socket.on('server', function(data) {
    console.log(data);
  });
}

我甚至不知道我还能做什么,要么就是那么傻,要么就是那么瞎。。。

共有2个答案

樊飞飙
2023-03-14

看起来,你使用client.js,它附加到index.html,只是在浏览器中。我建议您将您的client.js代码与任何bundler捆绑在一起,例如webpack。它将构建浏览器兼容的代码,您可以在index.html中使用。浏览器不需要内置的实现。

曾河
2023-03-14

你得到的错误,

ReferenceError:未定义require

与您试图加载的实际模块不可用无关。这意味着需要的函数根本不可用,就像调用任何未定义的旧函数一样。

> require('./pkdxfjdghbdhfksdh')
Error: Cannot find module './pkdxfjdghbdhfksdh'

如果require找不到模块,则将是(在节点中)得到的。

你到底是如何运行这段代码的?如果您实际在节点中运行它,例如,节点客户端。js,不应发生此错误。如果您试图在浏览器中运行东西,则需要像Webpack或Parcel这样的捆绑程序。

 类似资料:
  • 我在使用org.apache.commons.io.FileUtils从img目录删除文件时遇到问题。我正在使用以下代码: 实际上,该代码是用来替换img目录中已有的图像文件。我需要删除所有以前存在的文件,名称是n.*,与新文件,例如n.png。如果我试图删除图像文件,我会得到变量成功的false值,并且文件不会被删除。但不包括图像文件,例如*.abc;*.ACD;*.ACDC等被成功删除。这个问

  • 问题内容: 我有一个复选框,可以切换某些行为,但是如果有人连续点击100次,我不想向服务器端发送100个请求。 到目前为止,这就是我所准备的(找到以下代码片段): 在我的文档准备功能中: 然后事件本身: 这是因为我将1500毫秒作为去抖动周期,所以如果您在1500毫秒内单击n次,它将仅向服务器发送最新状态。 但是,使用它会有副作用,现在我的其他事件的click事件被搞砸了。我在这里做错什么了吗?有

  • 我在XML文件中引用XML模式时遇到了这个问题。 我的XSD位于以下路径中: 但是当我试图在我的XML文件中找到这样的模式时,找不到XSD: 找到XSD的唯一方法是将其放在同一文件夹中: 所以问题是:如果XML文件与XSD文件不在同一个文件夹中,路径必须如何查找才能找到XSD? 顺便说一下,我使用的例子来自MSDN:他们声称它应该像我尝试的那样工作。但事实并非如此。

  • 我正在创建一个应用程序,使用Node、Express、ejs和multer上传图像。每次我提交表格时。文件未定义。我花了一整天的时间来排除故障,但却不知道自己做错了什么。 超文本标记语言 app.js

  • 如何正确转换dto到json在Java?我这样做就像下面使用: 问题在于格式化字段。在Dto我有我的日期在这种格式:但转换此dto到json字节后,我看到我的拆分为对象与许多属性如下: 在使用之后,我希望将中的所有属性以与转换之前相同的格式进行转换。如何做到这一点? 谢谢你的帮助!

  • 我试图创建一个Java的应用程序,它可以将文件从Unix Samba共享复制到Windows文件夹。为了实现这一点,我使用JCIFS库。 我有以下代码: 我把它修改为: 但它给了我以下错误: 如果我尝试在Samba共享上创建一个新文件,它将按预期工作: 请帮助解决此问题。