ChatGPT解决这个技术问题 Extra ChatGPT

字段“浏览器”不包含有效的别名配置

我已经开始使用 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]

包.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"]。我尝试向我的 package.json 添加一个 browser 字段,但这似乎没有任何好处。

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() { ... }

为了完整起见,.babelrc

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

我在做什么错/错过了什么?

我喜欢所有“就我而言”的答案。只是去展示一个工具 Webpack 仍然是多么糟糕。想象一下为各种“在我的情况下”场景返回一个通用错误!
Webpack 用了这么多年还是不明白

M
Matthew Herbst

原来是 Webpack 没有解决导入的问题 - 谈论可怕的可怕错误消息:(

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

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

问题是由 npm 引起的吗?今天我使用npm升级了一个模块,卸载并安装了最新版本的模块,现在我收到这个错误,错误告诉我要更改模块的相对位置,但是文件列表有点高,是什么导致所有这些文件改变它的相对位置?
这也救了我的屁股。在 sass 文件中您可以使用 'folder' 导入,但在 .js 文件中您需要像 './folder' 一样导入,这有点违反直觉。同样没有 --display-error-details 没有错误消息,它只是崩溃
@Matthew Herbst 最愚蠢的错误消息之一:)我的屁股得救了,谢谢!
疯了吧。
在几乎 2022 年的 webpack 5 中,同样可怕的错误消息仍然存在。以这种方式从 v4 到 v5 没有进展?
F
Furman

仅供记录,因为我有类似的问题,也许这个答案会对某人有所帮助:在我的情况下,我使用的是使用 .js 文件的库,而我在 webpack 解析扩展中没有这样的扩展。添加适当的扩展修复问题:

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

m
messerbill

我正在构建一个 React 服务器端渲染器,发现从头开始构建单独的服务器配置时也会发生这种情况。如果您看到此错误,请尝试以下操作:

确保您的条目值相对于您的上下文值正确路径。我的条目文件名之前缺少前面的 ./ 。确保包含您的解决值。您对 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')
    ]
}
};

b
baltzar

我有同样的问题,但我的问题是路径中的错误套管:

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

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

B
Ben Smith

我在 TypeScript 项目中遇到了这个错误。在我的 webpack.config.js 文件中,我只解析 TypeScript 文件,即

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

但是我注意到导致错误的 node_module :

字段“浏览器”不包含有效的别名配置

没有任何“.ts”文件(这是可以理解的,因为模块已转换为 vanilla JS。Doh!)。

因此,为了解决这个问题,我将 resolve 声明更新为:

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

您还可以在扩展名末尾使用“...”来包含默认值。
P
Paul Roub

将此添加到您的 package.json

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

我编码人员应该先阅读文档,我总是在 stackoverflow 中搜索,但现在我更喜欢先阅读文档。谢谢编辑...
我已经解决了 main.js 的问题,但是我有下一个错误:加载时出错:未捕获的 TypeError:fs.existsSync 不是 localhost:9876/_karma_webpack_/vendor.js 第 110252 行中的函数 你有什么想法吗对这个?
@kimo_ouz - 绝对精彩!感谢您向我介绍“浏览器”领域的世界。以下是其他感兴趣的人的一些链接:insides of the webpack-package.json relationshipNPM official notes
T
TNT

在我的例子中,它是作为依赖项安装在 package.json 中的一个包,其相对路径如下:

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

并使用 import "phoenix_html"js/app.js 中导入

这已经奏效,但在更新节点、npm 等之后......它失败并显示上述错误消息。

将导入行更改为 import "../../deps/phoenix_html" 修复了它。


哦不,为什么 Webpack 在这方面如此不直观,你的想法?我也有本地依赖。
A
Abraham Jagadeesh

将我的条目更改为

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

它奏效了。


G
Good Night Nerd Pride

我的情况相当尴尬:我为 JS 库添加了 typescript 绑定,而没有添加库本身。

所以如果你这样做:

npm install --save @types/lucene

不要忘记做:

npm install --save lucene

有点明显,但我完全忘记了,这花了我很多时间。


E
EvgenyKolyakov

webpack.config.js 完全丢失时也会发生这种情况 (dockerignore 🤦‍♂️)


运行 npm run build 时,我必须修改 package.json 中的构建脚本以引用正确的 webpack 配置文件 "build": "webpack --mode production --config webpack/webpack.config.prod.js";
o
olivier

对于任何构建离子应用程序并尝试上传它的人。确保您向应用程序添加了至少一个平台。否则你会得到这个错误。


c
codejockie

根据我的经验,这个错误是由于 Webpack 中的别名命名不当造成的。我有一个名为 redux 的别名,webpack 尝试在我的别名路径中查找 redux 包附带的 redux

为了解决这个问题,我不得不将别名重命名为不同的名称,例如 Redux


l
luiscla27

就我而言,这是由于尝试将自定义角度库链接到使用应用程序时出现的符号链接损坏。运行 npm 链接 @authoring/canvas

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

看起来一切正常,但仍然找不到模块:

https://i.stack.imgur.com/8f9YU.png

当我将导入语句更正为编辑器可以找到链接的内容时:

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

我收到了溢出线程中提到的这个:

https://i.stack.imgur.com/wWIYx.png

为了解决这个问题,我必须:

cd /usr/local/lib/node_modules/packageName cd .. rm -rf packageName 在库的根目录下,运行:

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

在消费应用程序中,将 package.json 更新为:

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

在消费应用程序的根目录中运行 npm link packageName


l
luiscla27

在我的情况下,在 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;

F
FAndrew

就我而言,我导入了库文件,例如:

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

从导入中删除 public-api 后,一切正常:

import { MyFile } from "my-library";

MyFile 在库中的 public-api 文件中导出。


z
zemil

我在 tsconfig.json 中有别名:

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

所以我通过向 webpack.config 添加别名来解决这个问题:

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

a
alex351

对于使用 Ionic 的每个人:更新到最新的 @ionic/app-scripts 版本会提供更好的错误消息。

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

组件中 styleUrls 指向不存在文件的路径错误。奇怪的是,它在开发中没有出错。


d
dxhans5

在我的情况下,我的 webpack.config.js 文件底部没有导出。只需添加

export default Config;

解决了。


w
wltheng

就我而言,这是由于导入路径中区分大小写的错字所致。例如,

应该:

import Dashboard from './Dashboard/dashboard';

代替:

import Dashboard from './Dashboard/Dashboard';

A
AmirHossein Rezaei

在我的情况下,我使用了无效的 templateUrl。通过更正它问题解决了。

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

J
Jadamae77

我正在使用single-spa,遇到了这个错误的问题

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

我最终发现在 angular.json 构建选项中,“main”设置为 src\\main.single-spa.ts。将其更改为 src/main.single-spa.ts 修复它。

https://i.stack.imgur.com/zLKtt.png


A
Avinash

导入时遇到了同样的问题

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

将其更改为

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

A
Ankur Marwaha

对我来说,问题是,我正在进口

.ts files into .js files

将它们更改为 ts 也解决了这个问题。


M
Mostafa Armandi

就我而言,我在 index.d.ts 文件中混合了 enuminterface
我将枚举提取到另一个文件中,问题得到解决。


W
William Nicholson

就我而言,我收到了这个错误:(我正在使用带有 React v18 和 React Router v6 的 webpack 5)

ERROR in ./src/components/App/App.jsx 5:0-42
Module not found: Error: Can't resolve '../../Pages/Profile' in 'C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\components\App'  
resolve '../../Pages/Profile' in 'C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\components\App'
  using description file: C:\Users\nicho\Desktop\projects\webpack-starter-with-react\package.json (relative path: ./src/components/App)
    Field 'browser' doesn't contain a valid alias configuration
    using description file: C:\Users\nicho\Desktop\projects\webpack-starter-with-react\package.json (relative path: ./src/Pages/Profile)
      no extension
        Field 'browser' doesn't contain a valid alias configuration
        C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\Pages\Profile doesn't exist
      .js
        Field 'browser' doesn't contain a valid alias configuration
        C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\Pages\Profile.js doesn't exist
      .json
        Field 'browser' doesn't contain a valid alias configuration
        C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\Pages\Profile.json doesn't exist
      .wasm
        Field 'browser' doesn't contain a valid alias configuration
        C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\Pages\Profile.wasm doesn't exist
      as directory
        C:\Users\nicho\Desktop\projects\webpack-starter-with-react\src\Pages\Profile doesn't exist
 @ ./src/index.js 3:0-43 5:46-49

webpack 5.72.1 compiled with 3 errors in 1872 ms

将文件扩展名添加到模块导入为我解决了这个问题:

由此:

import Home from '../../Pages/Home'

对此:

import Home from '../../Pages/Home.jsx'

如果您使用 Babel,则不必在此处包含文件扩展名。相反,将它们添加为 Webpack babel-loader 规则中 test 字段的一部分:test: /\.(js|jsx|ts|tsx)$/,
嗨,马修,这已经配置好了。
Y
Yogesh Kumar Gupta

在我的例子中,webpack.config.js 中的 module.exports 下缺少 entry 字段,导致了这个问题。


H
Hari Krishnan

就我而言,

我错误地从 package.json 中删除了一个库(“mini-create-react-context”)。我将其添加回来,并安装了 yarn 并构建了应用程序,它开始正常工作。所以请看一下你的 package.json 文件。


A
Abeer Sul

我正在使用 "@google-cloud/translate": "^5.1.4" 并且一直在努力解决这个问题,直到我尝试了这个:

我打开了 google-gax\build\src\operationsClient.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' ......

我希望它可以帮助某人


V
Volkan Paksoy

我的情况类似于@witheng 的回答。

在某些时候,我注意到我的开发环境中某些文件名中存在一些大小写错误。例如文件名是

type.ts

我把它重命名为

Type.ts

在我的 Mac 开发环境中,这并没有注册为 git 中的更改,因此此更改没有进入源代码控制。

在文件名区分大小写的基于 Linux 的构建机器中,它无法找到具有不同大小写的文件。

为避免将来出现此类问题,我在 repo 中运行了以下命令:

git config core.ignorecase false

沃尔坎,我怎么联系你?您的网站上没有电子邮件。想就您的一篇博文提出问题,即volkanpaksoy.com/archive/2018/12/19/…
@RobertBenedetto 可能最简单和最有效的方法是在此处询问(或另一个 StackExchange 站点,如果它与您的问题更相关)并在此处发布链接。然后不仅我可以看一下,而且您可能会从整个社区获得更快更好的帮助。
真的。我会去做的。但是,由于第 5 步的过程似乎已更改,因此只是要求您更新它,并询问是否有任何方法可以使用 AWS 管理站点执行第 6 步?我是 AWS 的入门级,这两个步骤非常混乱。
我发表那篇文章已经有一段时间了,目前我并没有真正使用 EC2 实例。我不知道这些变化。希望有人能够权衡最新信息。您是否还查看了资源部分中的链接?如果该帖子中的资源更新,也许您也可以从他们那里获得最新信息。
S
Sauce

运行 GitHub 操作时出现此错误。问题是因为我将包列为对等依赖项而不是依赖项。

由于我使用的是 Rollup,因此解决方案是将包安装为对等依赖项和开发依赖项,并使用 rollup-plugin-peer-deps-external 从最终构建中删除开发依赖项。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅