Express和节点未捕获ReferenceError:未定义require

时间:2019-08-02 13:36:40

标签: node.js express mongoose

我正在使用express运行应用程序。我正在尝试在节点应用程序中使用mongoose。我已经安装了所有依赖项。

我的html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Security-Policy" content="default-src 'none'; connect-src 'self';font-src 'self'; img-src 'self' data: https:; style-src 'self' ; script-src 'self'">
    <title>Node application</title>
</head>
<body>
    <h1>This is sample page</h1>
    <script src="watchData.js"></script>
</body>
</html>

我的app.js

var express = require('express');
var app = express();
//setting middleware
app.use(express.static('public')); //Serves resources from public folder
app.listen(5000);

watchData.js

const mongoose = require('mongoose')

watchData.jsindex.htmlpublic文件夹中。我收到以下错误消息

Uncaught ReferenceError: require is not defined
    at watchData.js:1
(anonymous) @ watchData.js:1

第1行的const mongoose = require('mongoose')

任何帮助。

2 个答案:

答案 0 :(得分:0)

当您尝试在浏览器上运行节点应用程序时,通常会发生此错误。您可以使用名为browserify的工具将节点模块转换为可以在脚本标记中定义的简单脚本。您可以按照以下一些有用的链接进行操作。 NPM官方文档链接: https://www.npmjs.com/package/browserify 影片教学: https://youtu.be/CTAa8IcQh1U

答案 1 :(得分:0)

这里有些概念在客户端和服务器之间的范围不正确。 watchData.js应该是服务器端节点应用程序的一部分,但应作为客户端(浏览器)尝试并无法作为脚本运行的静态资产来使用。

浏览器无法直接从节点应用程序中调用函数或运行脚本。它可以通过使用express向节点应用程序公开的URL发出HTTP请求来与节点应用程序进行通信。

我建议先进行example app for express,然后在静态内容正常工作后再添加mongoose个查询。