Поле "браузер" не містить дійсної конфігурації псевдоніму


131

Я почав використовувати webpack2 (якщо бути точним v2.3.2), і після відновлення конфігурації я продовжую працювати з проблемою, яку я не можу вирішити, я отримую (заздалегідь пробачте за некрасивий дамп):

ERROR in ./src/main.js
Module not found: Error: Can't resolve 'components/DoISuportIt' in '[absolute path to my repo]/src'
resolve 'components/DoISuportIt' in '[absolute path to my repo]/src'
  Parsed request is a module
  using description file: [absolute path to my repo]/package.json (relative path: ./src)
    Field 'browser' doesn't contain a valid alias configuration
    aliased with mapping 'components': '[absolute path to my repo]/src/components' to '[absolute path to my repo]/src/components/DoISuportIt'
      using description file: [absolute path to my repo]/package.json (relative path: ./src)
        Field 'browser' doesn't contain a valid alias configuration
      after using description file: [absolute path to my repo]/package.json (relative path: ./src)
        using description file: [absolute path to my repo]/package.json (relative path: ./src/components/DoISuportIt)
          as directory
            [absolute path to my repo]/src/components/DoISuportIt doesn't exist
          no extension
            Field 'browser' doesn't contain a valid alias configuration
            [absolute path to my repo]/src/components/DoISuportIt doesn't exist
          .js
            Field 'browser' doesn't contain a valid alias configuration
            [absolute path to my repo]/src/components/DoISuportIt.js doesn't exist
          .jsx
            Field 'browser' doesn't contain a valid alias configuration
            [absolute path to my repo]/src/components/DoISuportIt.jsx doesn't exist
[[absolute path to my repo]/src/components/DoISuportIt]
[[absolute path to my repo]/src/components/DoISuportIt]
[[absolute path to my repo]/src/components/DoISuportIt.js]
[[absolute path to my repo]/src/components/DoISuportIt.jsx]

package.json

{
  "version": "1.0.0",
  "main": "./src/main.js",
  "scripts": {
    "build": "webpack --progress --display-error-details"
  },
  "devDependencies": {
    ...
  },
  "dependencies": {
    ...
  }
}

З точки зору browserполя він скаржиться, документація , я зміг знайти на це: package-browser-field-spec. Існує також WebPack документації на нього, але, здається, вона включена за замовчуванням: aliasFields: ["browser"]. Я спробував додати browserполе до свого, package.jsonале це, схоже, не принесло нічого хорошого.

webpack.config.js

import path from 'path';
const source = path.resolve(__dirname, 'src');

export default {
  context: __dirname,
  entry: './src/main.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].js',
  },
  resolve: {
    alias: {
      components: path.resolve(__dirname, 'src/components'),
    },
    extensions: ['.js', '.jsx'],
  },
  module: {
    rules: [
      {
        test: /\.(js|jsx)$/,
        include: source,
        use: {
          loader: 'babel-loader',
          query: {
            cacheDirectory: true,
          },
        },
      },
      {
        test: /\.css$/,
        include: source,
        use: [
          { loader: 'style-loader' },
          {
            loader: 'css-loader',
            query: {
              importLoader: 1,
              localIdentName: '[path]___[name]__[local]___[hash:base64:5]',
              modules: true,
            },
          },
        ],
      },
    ],
  },
};

src / main.js

import DoISuportIt from 'components/DoISuportIt';

src / компоненти / DoISuportIt / index.jsx

export default function() { ... }

Для повноти .babelrc

{
  "presets": [
    "latest",
    "react"
  ],
  "plugins": [
    "react-css-modules"
  ],
  "env": {
    "production": {
      "compact": true,
      "comments": false,
      "minified": true
    }
  },
  "sourceMaps": true
}

Що я роблю неправильно / пропав?

Відповіді:


101

Виникла проблема із веб-пакетом, який не вирішує імпорт, - розкажіть про жахливі жахливі повідомлення про помилки :(

// Had to change
import DoISuportIt from 'components/DoISuportIt';

// To (notice the missing `./`)
import DoISuportIt from './components/DoISuportIt';

1
Чи проблема викликана npm? Сьогодні я оновив модуль за допомогою npm, видаливши та встановивши останню версію модуля, тепер я отримав цю помилку, і помилка говорить про зміну відносного розташування модуля, але список файлів трохи високий, що спричинило всі ці файли до змінити своє відносне положення?
DEEPAN KUMAR

2
Це також врятувало мою дупу. Дещо протилежно інтуїтивно зрозуміло, що у файлах sass ви можете імпортувати за допомогою "папки", але у файлах .js це потрібно робити як "./folder". Також без --display-error-details
жодного

1
Дуже дякую. Ти врятуєш мій день.
Ярослав К.

6
@Matthew Herbst одне з найрозумніших повідомлень про помилки :) моя дупа збережена, THX!
Дмитро Сенькович

5
Це божевільно.
coolboyjules

15

Я будую рендер на стороні сервера React і виявив, що це може статися і при створенні окремої конфігурації сервера з нуля. Якщо ви бачите цю помилку, спробуйте наступне:

  1. Переконайтесь, що значення "введення" належним чином зафіксовано щодо значення "контексту". У шаблоні відсутній попередній "./" перед назвою вхідного файлу.
  2. Переконайтеся, що у вас включено значення "рішення". Інакше ваш імпорт будь-чого в node_modules буде за замовчуванням шукати у вашій "контекстній" папці, інакше.

Приклад:

const serverConfig = {
name: 'server',
context: path.join(__dirname, 'src'),
entry: {serverEntry: ['./server-entry.js']},
output: {
    path: path.join(__dirname, 'public'),
    filename: 'server.js',
    publicPath: 'public/',
    libraryTarget: 'commonjs2'
},
module: {
    rules: [/*...*/]
},
resolveLoader: {
    modules: [
        path.join(__dirname, 'node_modules')
    ]
},
resolve: {
    modules: [
        path.join(__dirname, 'node_modules')
    ]
}
};

11

У мене був той самий випуск, але мій був через неправильний кожух у шляху:

// Wrong - uppercase C in /pathCoordinate/
./path/pathCoordinate/pathCoordinateForm.component

// Correct - lowercase c in /pathcoordinate/
./path/pathcoordinate/pathCoordinateForm.component

1
Це було і моє питання. Однак він добре працював на моєму ноутбуці Windows, але не вдався до сервера, який був Linux.
Мет М

4

У моєму випадку це був пакет, встановлений як залежність у package.jsonвідносному шляху, як це:

"dependencies": {
  ...
  "phoenix_html": "file:../deps/phoenix_html"
},

та імпортується в js/app.jsсimport "phoenix_html"

Це спрацювало, але після оновлення вузла, npm тощо, воно не вдалось із зазначеним вище повідомленням про помилку.

Зміна рядка імпорту на import "../../deps/phoenix_html"виправлене.


О, ні, чому Ваша думка настільки неінтуїтивна в цьому, Ваші думки? У мене також є місцева залежність.
vintproykt


3

У моєму випадку до самого кінця конфігурації webpack.config.js, де я повинен exportsбув налаштуватись, був помилковий помилок: export(повинен бути exports), що призвело до збоїв із завантаженням webpack.config.js.

const path = require('path');

const config = {
    mode: 'development',
    entry: "./lib/components/Index.js",
    output: {
        path: path.resolve(__dirname, 'public'),
        filename: 'bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: path.resolve(__dirname, "node_modules")
            }
        ]
    }
}

// pay attention to "export!s!" here
module.exports = config;

3

На мій досвід, ця помилка була наслідком неправильного іменування псевдонімів у Webpack. У тому, що у мене був псевдонім з назвою, reduxі webpack намагався шукати те, reduxщо поставляється з пакетом redux в моєму шляху псевдоніму.

Щоб виправити це, мені довелося перейменувати псевдонім на щось подібне Redux.


2

Для всіх, хто будує іонний додаток і намагається завантажити його. Переконайтеся, що ви додали хоча б одну платформу в додаток. Інакше ви отримаєте цю помилку.


1

Для всіх, хто має Ionic: Оновлення до останньої версії @ ionic / app-script-скриптів дало краще повідомлення про помилку.

npm install @ionic/app-scripts@latest --save-dev

Це був неправильний шлях для styleUrls в компоненті до неіснуючого файлу. Як не дивно, це не дало помилок у розробці.


1

У моїй ситуації у мене не було експорту внизу файлу webpack.config.js. Просто додавання

export default Config;

вирішили це.


0

Я використовую "@ google-cloud / translate": "^ 5.1.4" і займався цією проблемою, поки не спробував це:

Я відкрив файл google-gax \ build \ src \geryClient.js і змінив

const configData = require('./operations_client_config');

до

const configData = require('./operations_client_config.json');

що вирішило помилку

ERROR in ./node_modules/google-gax/build/src/operationsClient.js Module not found: Error: Can't resolve './operations_client_config' in 'C:\..\Projects\qaymni\node_modules\google-gax\build\src' resolve './operations_client_config' ......

Я сподіваюся, що це комусь допоможе


0

У моєму випадку це було пов’язано з розірваним посиланням sym під час спроби npm прив’язати власну кутову бібліотеку до споживачого додатка. Після запуску npm посилання @ авторство / полотно

`` `" @ authoring / canvas ":" шлях / до / ui-authoring-canvas / dist "` `

Здається, все було в порядку, але модуля все ще не вдалося знайти:

Помилка при посиланні npm

Коли я виправив оператор імпорту на те, що редактор міг знайти Посилання:

import {CirclePackComponent} from '@authoring/canvas/lib/circle-pack/circle-pack.component';

Я отримав це, що згадується в потоці переповнення:

Польовий браузер не містить дійсної конфігурації псевдоніма

Щоб виправити це, мені довелося:

  1. cd /usr/local/lib/node_modules/packageName
  2. cd ..
  3. rm -rf packageName
  4. У кореневому каталозі бібліотеки запустіть: a. rm -rf dist б. npm run build c. cd dist г.npm link

  5. У споживчому додатку оновіть package.json за допомогою "packageName": "file: / path / to / local / node_module / packageName" "

  6. У кореневому каталозі споживчого додатка запустіть npm link packageName


0

У моєму випадку я використовував недійсний templateUrl.By для виправлення цієї проблеми.

@Component({
        selector: 'app-edit-feather-object',
        templateUrl: ''
    })

-1

У моєму випадку це пов’язано з помилкою помилки регістру в шляху імпорту. Наприклад,

Має бути:

import Dashboard from './Dashboard/dashboard';

Замість:

import Dashboard from './Dashboard/Dashboard';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.