Javascript 需求没有定义?Node.js

Javascript 需求没有定义?Node.js,javascript,node.js,google-chrome,Javascript,Node.js,Google Chrome,刚开始使用Node.js。在我的app/js文件中,我正在做这样的事情: app.js var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Am I really running a server?!'); }).listen(8080, '12

刚开始使用Node.js。在我的
app/js
文件中,我正在做这样的事情:

app.js

var http = require('http');

http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Am I really running a server?!');
}).listen(8080, '127.0.0.1');

console.log('running server!');
当我在终端中运行
node app.js
时,控制台会弹出
“正在运行服务器!”,但在我的浏览器中,我得到,
未捕获引用错误:未定义require

有人能给我解释一下为什么在终端中,它可以正常工作,但在浏览器中,它不能


我正在使用节点的
http服务器
为我的页面提供服务

在终端中,您正在运行节点应用程序,它正在运行您的脚本。这是一个与直接在浏览器中运行脚本截然不同的执行环境。虽然Javascript语言基本相同(如果您运行的是Chrome浏览器,则两种语言都是V8),但其余的执行环境(如可用的库)则不相同

js是一个服务器端Javascript执行环境,它将V8 Javascript引擎与一系列服务器端库结合在一起
require()
是node.js添加到环境中的一种功能。因此,当您在终端中运行node时,您正在运行一个包含
require()
的环境

require()
不是内置在浏览器中的功能。这是node.js的特定功能,而不是浏览器的功能。因此,当您试图让浏览器运行脚本时,它没有
require()

有几种方法可以在浏览器中运行某些形式的node.js代码(但不是全部)。例如,您可以用浏览器替代
require()
,它们的工作原理类似(尽管不同)

但是,您不会在浏览器中运行web服务器,因为这不是浏览器所能做到的



您可能对使用
require()
语句在浏览器中使用节点样式模块感兴趣。

node.JS是一种服务器端技术,而不是浏览器技术。因此,特定于节点的调用,如
require()
,在浏览器中不起作用


请参阅或,如果您希望从Node为特定于浏览器的模块提供服务。

为了补充上面其他人所说的内容,当您的HTML文件中有指向js文件的路径时,您的js文件将在客户端读取。至少这是我的问题。我把它作为脚本放在我的index.html标记中,希望这有帮助

第1点:
addrequire()
函数调用行代码仅在
app.js
文件或
main.js
文件中


第2点:通过检查
package.json
文件,确保安装了所需的包。如果未更新,请运行“npm i”。

从版本14开始,Node.js中也会出现这种情况

当您在
package.json
中将包类型声明为模块时,就会发生这种情况。如果您这样做,包括
要求


要解决此问题,请从
包.json中删除
“type”:“module”
,并确保没有任何文件以
.mjs

结尾,正如Abel所说,节点>=14中的ES模块在默认情况下不再具有
require

如果要添加,请将此代码放在文件顶部:

import { createRequire } from 'module';
const require = createRequire(import.meta.url);

来源:

你是。。。在浏览器中运行js文件?你不该那么做…@N73k-我不会把这当作一个严肃的问题。如果你想了解node.js,它是什么,人们使用它做什么,这是一个完全不同的主题,你可以从自己在网上搜索开始,找到各种各样的文章。Javascript是一种真正的OOP语言。也许与你认为你想要的不同,但那只是你的观点,有很多人出于各种原因不同意你的观点。这里不是辩论或讨论这个问题的地方。@HasinduDahanayake-这一煽动性言论的意义是什么?JS是一种非常真实的面向对象语言。语言中的任何东西都是一个对象,它具有方法、类和扩展类或对象的能力。它是松散类型的,但这并没有减少OO。我有同样的问题,并安装了browserify和webpack,但问题仍然存在!!如果不知道您的具体配置,我无法帮助您。最好用你的具体问题创建一个新问题。那么你的答案中有什么新信息呢?它看起来就像“我也是”—注释。这可能发生在项目文件夹中的任何东西上。因此,如果您使用
CommonJS
导入编写了一个不相关的构建脚本,但是使用
类型“:“module”
编写了一个
project.json
,那么构建脚本将中断,即使它没有在
包.json
中引用。您仍然可以在使用我正在使用nvm的模块中使用require,因此我从节点14切换到节点10,此错误已修复。您还可以将文件扩展名重命名为
.cjs
我们如何在TypeScript中添加此扩展名,以便在编译后的JS中添加此扩展名?