刚开始使用Node.js。在我的app/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,控制台会弹出'running server!',但在浏览器中却显示Uncaught ReferenceError: require is not defined。
node app.js
'running server!'
Uncaught ReferenceError: require is not defined
有人可以向我解释为什么在终端中可以正常运行,但在浏览器中却不能正常运行吗?
我正在使用节点的http-server服务我的页面。
http-server
在终端中,您正在运行节点应用程序,并且正在运行脚本。与直接在浏览器中运行脚本相比,这是一个非常不同的执行环境。尽管Javascript语言基本相同(如果您运行的是Chrome浏览器,则均为V8),但其余执行环境(例如可用的库)则不同。
node.js是一个服务器端Javascript执行环境,它结合了V8 Javascript引擎和许多服务器端库。 require()是node.js添加到环境中的一项功能。因此,当您在终端中运行node时,您正在运行一个包含的环境require()。
require()
require()不是浏览器内置的功能。那是node.js的特定功能,而不是浏览器的功能。因此,当您尝试让浏览器运行脚本时,它没有require()。
有一些方法可以在浏览器中运行某些形式的node.js代码(但不是全部)。例如,您可以以require()类似的方式(尽管不完全相同)获得浏览器替代品。
但是,您不会在浏览器中运行Web服务器,因为那不是浏览器能够执行的操作。
您可能对browserify感兴趣,它使您可以使用require()语句在浏览器中使用节点样式的模块。