在设置Neo4j时无法解析dns / tls

时间:2018-02-05 22:48:34

标签: node.js webpack neo4j

我正在尝试在我的neo4j-driver项目中使用node.js

var neo4j = require('neo4j-driver').v1;
// neo4j cypher helper module
const USERNAME = "neo4j";
const PASSWORD = "neo4j";
const URI = "bolt://localhost:7687";

const driver = neo4j.driver(URI, neo4j.auth.basic(USERNAME, PASSWORD));
const session = driver.session();

当我正在运行webpack时,它会给我以下错误:

   ./node_modules/neo4j-driver/lib/v1/internal/host-name-resolvers.js中的错误   找不到模块:错误:无法解决问题' dns' in' / home / nikita / Desktop / kipnis_prototype / BrainImmuneConnectome / node_modules / neo4j-driver / lib / v1 / internal'

readlinetlsnet的类似错误。怎么可以解决?

我的webpack.config.js

var path = require('path');

module.exports = {
  entry: {
    app: './views/index.js'
    //vendor: ["react","react-dom"]
  },
  output: {
   filename: 'bundle.js',
   path: path.resolve(__dirname, './public')
 },
  devtool: "#eval-source-map",
  module: {
   rules: [{
       test: /\.jsx?$/,
       exclude: /node_modules/,
       use: {
           loader: 'babel-loader?cacheDirectory=true',
       }
   }]
  },
  node: {
    fs: 'empty'
  },
  resolve: {
     extensions: ['.js', '.jsx']
  }
};

我确信数据库的一切都很好。该错误类似于以下github线程:

https://github.com/neo4j/neo4j-javascript-driver/issues/192

然而,我的导入是正确的,所以我很困惑。

  

更新

安装loader-utils对此问题没有帮助: Why can't webpack find any module from my React Webapp?

  

更新

提供neo4j-driver的整个路径后:

var neo4j_driver = require('../node_modules/neo4j-driver/lib/browser/neo4j-web.min.js');

webpack运行正常,所以我想它现在找到了驱动程序,但是,当我尝试运行该应用程序时,会显示另一个错误:

Neo4jError: Fatal: No compatible transport available. Need to run on a 
platform with the WebSocket API.
  

更新

我发现我无法指定整个路径,无论如何它应该是require("neo4j-driver")。然后在以下链接中:

https://github.com/request/request/compare/master...pho3nixf1re:webpack-tests

externals部分在webpack配置文件中指定:

...
  externals: {
    fs: '{}',
    tls: '{}',
    net: '{}',
    console: '{}'
  }

将此部分添加到我的webpack.config.js允许运行webpack和应用程序而不会在node.js控制台中出错,但是,浏览器会在这种情况下生成另一个错误,显然与{{1 }}:

enter image description here

  

更新

上面neo4j-driver中的上一个错误是由不合适的Update模块导入引起的,因此在修复应用程序开始按原样运行后,问题现在已经解决了。

1 个答案:

答案 0 :(得分:2)

externals部分添加到webpack.config.js解决了这个问题:

externals: {
    fs: '{}',
    tls: '{}',
    net: '{}',
    dns: '{}',
    readline: '{}'
  }