Ric*_*tos 36 javascript google-chrome node.js
刚开始使用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!');
Run Code Online (Sandbox Code Playgroud)
当我在我的终端并运行时node app.js,控制台吐出'running server!',但在我的浏览器中,我得到了,Uncaught ReferenceError: require is not defined.
有人可以向我解释为什么在终端中,它可以正常工作,但在浏览器中,它不是吗?
我正在使用节点http-server来为我的页面提供服务.
Abe*_*bel 115
从版本 14 开始,这现在也可以在 Node.js 中发生。
当您在package.json. 如果这样做,某些 CommonJS 变量将无法使用,包括require.
要解决此问题,请"type": "module"从您的package.json文件中删除并确保您没有任何以.mjs.
Rob*_*sch 58
Node.JS是服务器端技术,而不是浏览器技术.因此,特定于节点的调用require()在浏览器中不起作用.
见browserify或的WebPack如果你想从节点服务于特定浏览器的模块.
Dr-*_*ket 49
正如 Abel 所说,Node >= 14 中的ES 模块require默认不再具有。
如果要添加它,请将此代码放在文件的顶部:
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
Run Code Online (Sandbox Code Playgroud)
来源:https : //nodejs.org/api/modules.html#modules_module_createrequire_filename
jfr*_*d00 43
在终端中,您正在运行节点应用程序,它正在运行您的脚本.这与在浏览器中直接运行脚本的执行环境截然不同.虽然Javascript语言基本相同(如果您运行Chrome浏览器,则都是V8),其他执行环境(如可用库)也不尽相同.
node.js是一个服务器端Javascript执行环境,它将V8 Javascript引擎与一堆服务器端库相结合. require()是node.js添加到环境中的一个这样的功能.因此,当您在终端中运行节点时,您正在运行包含的环境require().
require()不是浏览器内置的功能.这是node.js的一个特定功能,而不是浏览器的特定功能.因此,当您尝试让浏览器运行您的脚本时,它没有require().
有一些方法可以在浏览器中运行某些形式的node.js代码(但不是全部).例如,您可以require()类似地获得该工作的浏览器替代品(尽管不完全相同).
但是,您不会在浏览器中运行Web服务器,因为浏览器无法执行此操作.
您可能对browserify感兴趣,它允许您使用require()语句在浏览器中使用节点样式模块.
小智 6
"type":"module"只需从 package.json 中删除即可。
| 归档时间: |
|
| 查看次数: |
220553 次 |
| 最近记录: |