Ich versuche Node-Postgres zu verwenden, um meine App mit Postgres zu verbinden. Der Code ich verwende, ist:Webpack kann __dirname nicht verwenden?
import React from 'react';
import pg from 'pg';
import fs from 'fs';
var cn = {
host: 'localhost', // server name or IP address;
port: 5432,
database: 'my_db',
user: 'myname',
password: 'mypass'
};
und es erzeugt den Fehler:
index.js:5 Uncaught ReferenceError: __dirname is not defined
up @ index.js:5
__webpack_require__ @ bootstrap 539ecc7…:19
(anonymous function) @ client.js:4
__webpack_require__ @ bootstrap 539ecc7…:19
(anonymous function) @ index.js:3
console.EventEmitter._events @ index.js:81
__webpack_require__ @ bootstrap 539ecc7…:19
(anonymous function) @ app.js:26957
__webpack_require__ @ bootstrap 539ecc7…:19
content @ bootstrap 539ecc7…:39
__webpack_require__ @ bootstrap 539ecc7…:19
(anonymous function) @ bootstrap 539ecc7…:39
(anonymous function) @ bootstrap 539ecc7…:39
webpackUniversalModuleDefinition @ universalModuleDefinition:7
(anonymous function) @ universalModuleDefinition:10
Der Pfad auf index.js in der Konsole vorgesehen ist webpack: ///./~/pg/~/ pgpass/lib/index.js: 5
Ich versuchte @Renzo Poddighe Lösung bei how to write file with node webkit js?, aber ich bekomme immer noch den gleichen Fehler. Ich denke, es könnte etwas mit den Diskussionen unter https://github.com/nwjs/nw.js/wiki/Differences-of-JavaScript-contexts#resolving-relative-paths-to-other-scripts und https://github.com/nwjs/nw.js/issues/264 zu tun haben. Sie sagen, dass
// __dirname is not defined in webkit context, this is only node.js thing
console.log(__dirname); // undefined
und
__dirname arbeitet in Node.js Modulen, das heißt in JavaScript-Code, der mit require() aufgerufen wurde. __dirname funktioniert nicht nur in WebKit-Skripten, d. H. In JavaScript-Code, der mit HTML aufgerufen wurde, oder jQuery $ .getScript() oder einer anderen ähnlichen Methode.
Irgendwelche Ideen? Lassen Sie mich wissen, welche anderen Informationen ich hinzufügen muss.
bearbeiten
Ich glaube, mein Ziel ist
var config = {
entry: { app: './src/index.jsx'},
output: {
libraryTarget: 'umd',
path: path.join(__dirname, 'dist'),
filename: '[name].js'
}, ...
Mein webpack.config.js wie folgt aussieht:
...
node: {
console: true,
__dirname: true,
dns: 'empty',
fs: 'empty',
net: 'empty',
tls: 'empty'
}
...
Was ist das Ziel Ihres Webpacks? web/node oder etwas anderes https://webpack.github.io/docs/configuration.html#target – thangngoc89
Die einzige Sache mit 'target', die ich sehe, ist' libraryTarget: 'umd', '. Soll ich das explizit einstellen? Laut dem Link zu den Dokumenten sieht es so aus, als ob mein Ziel standardmäßig ein Web ist. – neallred
Versuchen Sie 'target:' node' in webpack config zu spezifizieren –