Это мой предпочтительный способ реализации синглетонов:
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
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']
}
Добавление к вышеуказанному ответу,
Свойство 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']
}
};
Убедитесь, что пакет bundle.js сгенерирован без ошибок (проверьте журнал Run Run Task).
Я получал «не могу найти модуль, если файл с именем jsx» из-за ошибки синтаксиса в html в компоненте рендеринга.
rule
s, перечисленных вmodule
...{ module: { rules: [ { test: /\.jsx?$/, resolve: { extensions: [".js", ".jsx"] }, include: ... } ] }
– mr rogers 26 March 2018 в 01:16