首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >字段“browser”不包含有效的别名配置

字段“browser”不包含有效的别名配置
EN

Stack Overflow用户
提问于 2017-03-27 03:40:33
回答 37查看 416.1K关注 0票数 300

我已经开始使用webpack2 (准确地说,是v2.3.2),在重新创建配置之后,我一直遇到一个我似乎无法解决的问题(预先为丑陋的转储感到抱歉):

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
{
  "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中添加一个package.json字段,但这似乎没有任何好处。

webpack.config.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
import DoISuportIt from 'components/DoISuportIt';

src/components/DoISuportIt/index.jsx

代码语言:javascript
运行
复制
export default function() { ... }

为了完整性,.babelrc

代码语言:javascript
运行
复制
{
  "presets": [
    "latest",
    "react"
  ],
  "plugins": [
    "react-css-modules"
  ],
  "env": {
    "production": {
      "compact": true,
      "comments": false,
      "minified": true
    }
  },
  "sourceMaps": true
}

我做错了什么?

EN

回答 37

Stack Overflow用户

回答已采纳

发布于 2017-04-09 23:42:59

原来是Webpack的一个问题,就是没有解决一个可怕的错误信息。

代码语言:javascript
运行
复制
// I Had to change:
import DoISuportIt from 'components/DoISuportIt';

// to (notice the missing `./`)
import DoISuportIt from './components/DoISuportIt';
票数 288
EN

Stack Overflow用户

发布于 2021-06-10 22:10:40

为了记录在案,因为我有类似的问题,也许这个答案会对某人有所帮助:在我的例子中,我使用的是使用.js文件的库,而在webpack的解决扩展中没有这样的扩展名。添加适当的扩展固定问题:

代码语言:javascript
运行
复制
module.exports = {
(...)
  resolve: {
    extensions: ['.ts', '.js'],
  }
}
票数 58
EN

Stack Overflow用户

发布于 2017-10-09 15:00:30

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

  1. 确保您的entry值相对于context值是正确的路径。我的在输入文件名之前缺少了前面的./
  2. 确保包含了您的resolve值。否则,您对node_modules中任何内容的导入都将默认为查看您的context文件夹。

示例:

代码语言:javascript
运行
复制
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')
    ]
}
};
票数 33
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43037590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档