在app.js中需要错误

时间:2017-05-02 08:05:32

标签: javascript node.js npm webpack

我最近开始研究用nodejs编写的新游戏,出于某种原因,它不允许我在app.js中使用require,我知道这可能是因为我做了其他像这样的游戏

这是我在网站上的控制台中收到的错误 Uncaught ReferenceError: require is not defined at app.js:2

这也是它的代码所在

var socket;
var pg = require('pg');

var config = require('../../config.json');

var conString = config.database.uri;

var client = new pg.Client(conString);
client.connect();

此错误正在使我的其余代码处于运行状态,我几乎可以肯定这一行

var config = require('../../config.json');

我修复第一个

后也会产生错误

根据webpack npm和我放置"build": "webpack"的所有其他项目应该允许app.js中的require但是它不起作用

这是我的package.json

{
  "name": "CodingIdleMasters",
  "version": "0.0.1",
  "description": "Placeholder",
  "main": "server/server.js",
  "scripts": {
    "build": "webpack",
    "start": "node server/server.js"
  },
  "author": "FlamingGenius",
  "contributors": [
    "Joseph Williamson <deathcrow4561@gmail.com> (https://github.com/FlamingGenius)"
  ],
  "dependencies": {
    "express": "^4.13.4",
    "socket.io": "^1.4.6",
    "socket.io-client": "^1.4.6",
    "webpack": "^1.13.1",
    "webpack-stream": "^3.2.0",
    "pg": "^1.0.0"
  }
}

以下是github上项目的链接,以防您需要查看更多代码 Github Project

如果它有助于我当前的等级

-client
 -css
  -main.css
 -js
  -app.js
  -game.js
  -menu.js
 -index.html
-server
 -server.js
-config.json
-package.json

编辑:

它似乎我需要webpack配置,但文档arnt真的很有帮助解释如何设置它如果有人可能提供解释如何设置它的答案,并可能提供一些代码,这将是非常有帮助的

1 个答案:

答案 0 :(得分:1)

require用于NodeJS,而不是浏览器。

但是,有一些方法可以让模块导入在浏览器中正常工作。如前所述,WebPack是一种方法。设置WebPack需要的不仅仅是将行添加到package.json并安装文件 - 您需要一个配置文件和正确的构建:https://webpack.js.org/guides/

首先,确保package.json具有正确的依赖项(在本例中为pg)并且已安装(检查node_modules目录)。

假设您现在想要的只是JavaScript模块加载,您可以使用位于项目根目录的以下配置文件(webpack.config.js):

const path = require('path');

module.exports = {
    entry: {
        app: './client/app.js',
        game: './client/game.js',
        menu: './client/menu.js',
    },
    context: path.resolve(__dirname, '.'),
    devtool: 'source-map',
    target: 'web',
    resolve: {
        extensions: ['.js'],
        modules: [path.resolve(__dirname, 'client'), 'node_modules']
    },
    resolveLoader: {
        modules: ['node_modules']
    },
    output: {
        filename: '[name].js',
        path: path.resolve(__dirname, 'client', 'dist') // output into /client/dist
    }
};

这将获取您的每个文件并捆绑脚本及其依赖项,以便它能够正常工作。使用webpack --config webpack.config.js运行它。我给你一个非常简单的配置 - 在一个真实的用例中,可能会将所有主文件打包成一个包,而不是每个脚本文件都有一个包。 WebPack是一个非常强大的工具,你可以扩展你的使用范围,但我会把它留给你,因为我不知道你的确切设置(WebPack指南有大量的信息)。

话虽这么说,从客户端连接到数据库可能是可能的,但肯定不推荐。首先,pg包是为在NodeJS上使用而设计的。其次,数据库连接应始终由服务器处理,客户端应始终只与服务器交互。看一下您的服务器,您只是在不做任何事情的情况下提供内容 - 您在数据库客户端上尝试做的所有事情都应该卸载到服务器上。