Узел webpack process.cwd () и path.resolve () возвращают '/' - PullRequest
0 голосов
/ 02 мая 2020

В значительной степени заголовок, не уверен, что я неправильно настроил ... Другие решения, на которые я смотрел, предлагали добавить target: node, но я использую webpack для связывания реакции, поэтому моя цель не должна быть nodejs, верно?

Конфигурация веб-пакета:

const path = require('path');
require('dotenv').config();
const mode = process.env.NODE_ENV;
console.log(mode);

module.exports = {
  entry: ['react-hot-loader/patch', path.resolve(__dirname, 'src')],
  output: {
    path: path.resolve(__dirname, '/public'),
    publicPath: '/public/js/',
    filename: 'bundle.js',
  },
  mode,
  module: {
    rules: [
      {
        enforce: 'pre',
        test: /\.(js|jsx)$/,
        loader: [{ loader: 'eslint-loader' }],
      },
      {
        test: /\.(js|jsx)$/,
        exclude: /node_modules/,
        loader: [
          {
            loader: 'babel-loader',
            query: { presets: ['@babel/preset-react'] },
          },
        ],
      },
    ],
  },
  resolve: {
    alias: { 'react-dom': '@hot-loader/react-dom' },
    modules: ['src', 'node_modules'],
    extensions: ['*', '.js', '.jsx'],
  },
  devtool: 'source-map',
  devServer: {
    historyApiFallback: true,
    hot: true,
    contentBase: './public',
    compress: true,
  },
  node: { __dirname: true, __filename: true },
console.log(__filename);     // returns src/components/Play/components/Lobby.jsx
console.log(__dirname);      // returns src/components/Play/components
console.log(process.cwd());  // returns /
console.log(path.resolve()); // returns /

Добавление дополнительного текста, чтобы иметь возможность опубликовать это. Подробнее было добавлено, чтобы опубликовать это. Извините, я не уверен, что я мог бы описать больше об этой проблеме, которую я имею ...

1 Ответ

0 голосов
/ 11 мая 2020

Поскольку вы настроили node: { __dirname: true, __filename: true }, веб-пакет заменит __dirname и __filename при объединении ( см. Документы ). Вот почему вы видите значение, которое вы ожидаете от console.log(__dirname), когда ваш код выполняется. Имейте в виду, что каталог src/components/Play/components/ фактически не существует после объединения - весь ваш код находится в этом единственном bundle.js файле.

Что касается process.cwd(), что вы ожидаете получить за текущий рабочий каталог, когда ваш код работает в веб-браузере? Код, запущенный в вашем браузере, не имеет доступа к файловой системе, в которой был написан ваш код, и поэтому возвращает /, поскольку cwd кажется достаточно разумным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...