В чем разница между импортом из xxx.vue и из xxx? [Дубликат]

Это мой предпочтительный способ реализации синглетонов:

class Test(object):
    obj = None

    def __init__(self):
        if Test.obj is not None:
            raise Exception('A Test Singleton instance already exists')
        # Initialization code here

    @classmethod
    def get_instance(cls):
        if cls.obj is None:
            cls.obj = Test()
        return cls.obj

    @classmethod
    def custom_method(cls):
        obj = cls.get_instance()
        # Custom Code here
62
задан Henrik Andersson 8 January 2016 в 14:35
поделиться

5 ответов

Webpack не знает, чтобы разрешить файлы .jsx неявно. Вы можете указать расширение файла в своем приложении (import App from './containers/App.jsx';). Тест текущего загрузчика говорит о том, что вы используете загрузчик babel, когда вы явно импортируете файл с расширением jsx.

или вы можете включить .jsx в расширения, которые веб-пакет должен разрешить без явного объявления:

module.exports = {
  entry: './index.jsx',
  output: {
    filename: 'bundle.js'
  },
  module: {
    loaders: [{
      test: /\.jsx?$/,
      exclude: /node_modules/,
      loader: 'babel',
      query: {
        presets: ['es2015', 'react']
      }
    }]
  },
  resolve: {
    extensions: ['', '.js', '.jsx'],
  }
};

Для Webpack 2 оставьте пустое расширение.

resolve: {
  extensions: ['.js', '.jsx']
}
127
ответ дан Jeremy 22 August 2018 в 20:27
поделиться
  • 1
    Для webpack 4 я обнаружил, что мне нужно было поместить это в один из rule s, перечисленных в module ... { module: { rules: [ { test: /\.jsx?$/, resolve: { extensions: [".js", ".jsx"] }, include: ... } ] } – mr rogers 26 March 2018 в 01:16
  • 2
    @mrrogers Я искал везде для этого! Я советую тебе шляпу, сэр! – Frederik Petersen 13 April 2018 в 17:00
  • 3
    большое спасибо! Я искал это часами! – TheSchecke 11 June 2018 в 10:41

Добавление к вышеуказанному ответу,

Свойство resolve - это место, где вы должны добавить все типы файлов, которые вы используете в своем приложении.

Предположим, вы хотите использовать файлы .jsx или .es6 , с которыми вы можете с радостью включить их здесь, и webpack разрешит их:

resolve: {
  extensions: ["", ".js", ".jsx" ".es6"]
          }

Если вы добавите расширения в разрешить , вы можете удалить их из оператора импорта:

import Hello from './hello';// Extensions removed
import World from './world';

Другие сценарии, например, если вы хотите, чтобы скрипт кофе был обнаружен, вы должны настроить свойство теста так же, как:

// webpack.config.js
module.exports = {
  entry: './main.js',
  output: {
    filename: 'bundle.js'       
  },
  module: {
    loaders: [
      { test: /\.coffee$/, loader: 'coffee-loader' },
      {
        test: /\.js$/,
        loader: 'babel-loader',
        query: {
          presets: ['es2015', 'react']
        }
      }
    ]
  },
  resolve: {
    // you can now require('file') instead of require('file.coffee')
    extensions: ['', '.js', '.json', '.coffee'] 
  }
};
13
ответ дан rjohnston 22 August 2018 в 20:27
поделиться
  • 1
    В WebPack 3.4 вы не можете использовать параметр resolve.extension со значением empty. Это вызовет исключение в компиляции: «Недопустимый объект конфигурации. Webpack был инициализирован с использованием объекта конфигурации, который не соответствует схеме API. - configuration.resolve.extensions [0] не должно быть пустым. & quot; – Julio Spader 4 August 2017 в 19:09

Убедитесь, что пакет bundle.js сгенерирован без ошибок (проверьте журнал Run Run Task).

Я получал «не могу найти модуль, если файл с именем jsx» из-за ошибки синтаксиса в html в компоненте рендеринга.

0
ответ дан rluks 22 August 2018 в 20:27
поделиться
0
ответ дан anti Py Abhishek Prajapati 5 November 2018 в 17:40
поделиться
1
ответ дан Richard Vanbergen 5 November 2018 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: