首页 > 解决方案 > 如何处理nodejs应用程序中的“ReferenceError:require is not defined”?

问题描述

用例是从浏览器获取一些用户输入,然后将该数据插入数据库。

我设置了一个server.js

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

app.get('/', function(req, res) {
  res.sendFile(path.resolve('./app/index.html'));
});

我也有一个index.html去。我正在导入add_response.jshtml。

<script src="js/add_response.js"></script>

<form ng-submit="submit_add()" ng-controller="AddResponse" style="min-height: 230px; margin: 0 auto;">
    <div>
        <textarea name="response_add" ng-model="response_add" rows="10" cols="80"></textarea>
    </div>
    <div class="submitButton">
        <input type="submit" id="submit_add" value="Submit" />
    </div>
</form>

到目前为止,一切都运行良好。然后我创建add_response.js了处理从浏览器获取一些用户输入并在用户单击提交时将其插入数据库:

var myApp = angular.module("myApp");

myApp.controller('AddResponse', function ($scope, $http) {

    $scope.submit_add = function () {
        $scope.response = $scope.response_add;

        //insert into Couchbase DB
    }
}

问题是要插入 Couchbase 我需要导入 Couchbase (它与 npm 一起安装):

var couchbase = require('couchbase')

如果我尝试在其中执行此操作,则add_response.js在启动应用程序并转到浏览器后会出现错误:ReferenceError: require is not defined

从谷歌搜索看来,这是因为require它不起作用,add_response.js因为它是浏览器/客户端(节点上的客户端:未捕获的 ReferenceError:未定义要求)。

我不确定处理这个问题的最佳方法。我是新手,所以很可能我刚刚得到了一个结构很差的应用程序。在上面的 stackoverlfow 响应中,推荐使用 browserify,但我正在尝试使用 pkg 将此应用程序捆绑为可执行文件,并且不确定 browserify 是否可以使用它。

我是否需要将 response_add 数据传递到其他地方才能将其插入数据库?如果是这样,怎么做?(尽量不要使事情过于复杂)

标签: javascripthtmlnode.js

解决方案


推荐阅读