Field 'browser' doesn't contain a valid alias configuration

NpmWebpackCommonjsWebpack 2package.json

Npm Problem Overview


I've started using webpack2 (to be precise, v2.3.2) and after re-creating my config I keep running into an issue I can't seem to solve I get (sorry in advance for ugly dump):

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": {
    ...
  }
}

In terms of the browser field it's complaining about, the documentation I've been able to find on this is: package-browser-field-spec. There is also webpack documentation for it, but it seems to have it turned on by default: aliasFields: ["browser"]. I tried adding a browser field to my package.json but that didn't seem to do any good.

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/components/DoISuportIt/index.jsx

export default function() { ... }

For completeness, .babelrc

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

What am I doing wrong/missing?

Npm Solutions


Solution 1 - Npm

Turned out to be an issue with Webpack just not resolving an import - talk about horrible horrible error messages :(

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

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

Solution 2 - Npm

Just for record, because I had similiar problem, and maybe this answer will help someone: in my case I was using library which was using .js files and I didn't had such extension in webpack resolve extensions. Adding proper extension fixed problem:

module.exports = {
(...)
  resolve: {
    extensions: ['.ts', '.js'],
  }
}

Solution 3 - Npm

I'm building a React server-side renderer and found this can also occur when building a separate server config from scratch. If you're seeing this error, try the following:

  1. Make sure your entry value is properly pathed relative to your context value. Mine was missing the preceeding ./ before the entry file name.
  2. Make sure you have your resolve value included. Your imports on anything in node_modules will default to looking in your context folder, otherwise.

Example:

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') ] } };

Solution 4 - Npm

I had the same issue, but mine was because of wrong casing in path:

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

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

Solution 5 - Npm

I encountered this error in a TypeScript project. In my webpack.config.js file I was only resolving TypeScript files i.e.

resolve: {
    extensions: [".ts"],
}

However I noticed that the node_module which was causing the error:

> Field 'browser' doesn't contain a valid alias configuration

did not have any ".ts" files (which is understandable as the module has been converted to vanilla JS. Doh!).

So to fix the issue I updated the resolve declaration to:

resolve: {
    extensions: [".ts", ".js"],
}

Solution 6 - Npm

Add this to your package.json:

"browser": {
  "[module-name]": false   
},

Solution 7 - Npm

In my case it was a package that was installed as a dependency in package.json with a relative path like this:

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

and imported in js/app.js with import "phoenix_html"

This had worked but after an update of node, npm, etc... it failed with the above error-message.

Changing the import line to import "../../deps/phoenix_html" fixed it.

Solution 8 - Npm

Changed my entry to

entry: path.resolve(__dirname, './src/js/index.js'),

and it worked.

Solution 9 - Npm

My case was rather embarrassing: I added a typescript binding for a JS library without adding the library itself.

So if you do:

npm install --save @types/lucene

Don't forget to do:

npm install --save lucene

Kinda obvious, but I just totally forgot and that cost me quite some time.

Solution 10 - Npm

For anyone building an ionic app and trying to upload it. Make sure you added at least one platform to the app. Otherwise you will get this error.

Solution 11 - Npm

In my case, to the very end of the webpack.config.js, where I should exports the config, there was a typo: export(should be exports), which led to failure with loading webpack.config.js at all.

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;

Solution 12 - Npm

In my experience, this error was as a result of improper naming of aliases in Webpack. In that I had an alias named redux and webpack tried looking for the redux that comes with the redux package in my alias path.

To fix this, I had to rename the alias to something different like Redux.

Solution 13 - Npm

In my case, it was due to a broken symlink when trying to npm link a custom angular library to consuming app. After running npm link @authoring/canvas

"@authoring/canvas": "path/to/ui-authoring-canvas/dist"

It appear everything was OK but the module still couldn't be found:

Error from npm link

When I corrected the import statement to something that the editor could find Link:

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

I received this which is mention in the overflow thread:

Field Browser doesn't contain a valid alias configuration

To fix this I had to:

  1. cd /usr/local/lib/node_modules/packageName
  2. cd ..
  3. rm -rf packageName
  4. In the root directory of the library, run:

a) rm -rf dist b) npm run build c) cd dist d) npm link

  1. In the consuming app, update the package.json with:

"packageName": "file:/path/to/local/node_module/packageName""

  1. In the root directory of the consuming app run npm link packageName

Solution 14 - Npm

This also occurs when the webpack.config.js is simply missing (dockerignore 臘‍♂️)

Solution 15 - Npm

For everyone with Ionic: Updating to the latest @ionic/app-scripts version gave a better error message.

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

It was a wrong path for styleUrls in a component to a non-existing file. Strangely it gave no error in development.

Solution 16 - Npm

In my situation, I did not have an export at the bottom of my webpack.config.js file. Simply adding

export default Config;

solved it.

Solution 17 - Npm

In my case, it is due to a case-sensitivity typo in import path. For example,

Should be:

import Dashboard from './Dashboard/dashboard';

Instead of:

import Dashboard from './Dashboard/Dashboard';

Solution 18 - Npm

In my case I was using invalid templateUrl.By correcting it problem solved.

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

Solution 19 - Npm

I am using single-spa, and encountered this issue with the error

Module not found: Error: Can't resolve '/builds/**/**/src\main.single-spa.ts' in /builds/**/**'

I eventually figured out that in angular.json build options "main" was set to src\\main.single-spa.ts. Changing it to src/main.single-spa.ts fixed it.

enter image description here

Solution 20 - Npm

In my case, I imported library files like:

import { MyFile } from "my-library/public-api";

After I removed the public-api from the import everything worked fine:

import { MyFile } from "my-library";

MyFile is exported in the public-api file in the library.

Solution 21 - Npm

Had the same issue with angular was importing

import { Injectable } from "@angular/core/core";

changed it to

import { Injectable } from "@angular/core";

Solution 22 - Npm

For me the issue was, I was importing

.ts files into .js files

changing them to ts as well solved the issue.

Solution 23 - Npm

In my case, I had a mixture of enum and interface in the index.d.ts file.
I extracted enums into another file and the issue resolved.

Solution 24 - Npm

I had aliases into tsconfig.json:

{
	"compilerOptions": {
		"paths": {
			"@store/*": ["./src/store/*"]
		}
	},
}

So I solved this issue by adding aliases to webpack.config also:

module.exports = {
  //...
  resolve: {
    alias: {
      '@store': path.resolve(__dirname, '../src/store'),
    },
  },
};

Solution 25 - Npm

I'm using "@google-cloud/translate": "^5.1.4" and was truggling with this issue, until I tried this:

I opened google-gax\build\src\operationsClient.js file and changed

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

to

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

which solved the error

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' ......

I hope it helps someone

Solution 26 - Npm

My case was similar to @witheng's answer.

At some point, I noticed some casing error in some file names in my development environment. For example the file name was

type.ts

and I renamed it to

Type.ts

In my Mac dev environment this didn't register as a change in git so this change didn't go to source control.

In the Linux-based build machine where the filenames are case-sensitive it wasn't able to find the file with different casing.

To avoid issues like this in the future, I ran this command in the repo:

git config core.ignorecase false

Solution 27 - Npm

I was getting this error when running a GitHub action. The issue was because I'd listed the package as a peer dependency instead of a dependency.

Since I'm using Rollup, the solution was to install the package both as a peer dependency and a dev dependency, and use rollup-plugin-peer-deps-external to remove the dev dependency from the final build.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMatthew HerbstView Question on Stackoverflow
Solution 1 - NpmMatthew HerbstView Answer on Stackoverflow
Solution 2 - NpmFurmanView Answer on Stackoverflow
Solution 3 - NpmArtif3xView Answer on Stackoverflow
Solution 4 - NpmbaltzarView Answer on Stackoverflow
Solution 5 - NpmBen SmithView Answer on Stackoverflow
Solution 6 - Npmkimo_ouzView Answer on Stackoverflow
Solution 7 - NpmTNTView Answer on Stackoverflow
Solution 8 - NpmAbraham JagadeeshView Answer on Stackoverflow
Solution 9 - NpmGood Night Nerd PrideView Answer on Stackoverflow
Solution 10 - NpmolivierView Answer on Stackoverflow
Solution 11 - NpmLeonView Answer on Stackoverflow
Solution 12 - NpmcodejockieView Answer on Stackoverflow
Solution 13 - NpmSankofaView Answer on Stackoverflow
Solution 14 - NpmEvgenyKolyakovView Answer on Stackoverflow
Solution 15 - Npmalex351View Answer on Stackoverflow
Solution 16 - Npmdxhans5View Answer on Stackoverflow
Solution 17 - NpmwlthengView Answer on Stackoverflow
Solution 18 - NpmAmirHossein RezaeiView Answer on Stackoverflow
Solution 19 - NpmJadamae77View Answer on Stackoverflow
Solution 20 - NpmFAndrewView Answer on Stackoverflow
Solution 21 - NpmAvinashView Answer on Stackoverflow
Solution 22 - NpmAnkur MarwahaView Answer on Stackoverflow
Solution 23 - NpmMostafa ArmandiView Answer on Stackoverflow
Solution 24 - NpmzemilView Answer on Stackoverflow
Solution 25 - NpmAbeer SulView Answer on Stackoverflow
Solution 26 - NpmVolkan PaksoyView Answer on Stackoverflow
Solution 27 - NpmSauceView Answer on Stackoverflow