Последующие действия /52443554#52443554">предыдущий вопрос, я обнаружил несколько вещей. Я использую следующие две ссылки (на один и тот же файл).
var Image1 = require("../assets/author.png");
import Image2 from "../assets/author.png";
В методе render() я пытаюсь создать разметку двумя способами.
<img style={imgStyle} src={Image1} />
<img style={imgStyle} src={Image2} />
Вопреки моим ожиданиям, они отображаются по-разному.
<img style="margin: 15px;" src="1e0cf4ef57ac9ab0521646ee9c657eae.png">
<img style="margin: 15px;">
Я не уверен, что с этим делать.
В какое руководство было преобразовано имя файла? Могу ли я контролировать это? Должен ли я вмешиваться в это?
Что происходит с частью src из разметки? Может ли он просто так исчезнуть? Что я могу с этим поделать?
Я добавил файл с определением TypeScript, как показано ниже, чтобы программное обеспечение понимало, что это допустимый тип модуля. Однако не совсем уверен, что он действительно достигает этой цели.
declare module "*.png" {
const value: any;
export default value;
}
Image2
оценивается какundefined
, потому что вы пытаетесь выполнить импорт по умолчанию из модуля, который не имеет экспорта по умолчанию в стиле ES6, и установка атрибута наundefined
приводит к тому, что он не добавляется в HTML. Используйтеimport Image2 = require("../assets/author.png")
, чтобы импортировать экспортированное значение в стиле CommonJS, или включите параметр компилятораesModuleInterop
. - person Matt McCutchen   schedule 30.09.2018custom.d.ts
— это объявление TypeScript, которое используется для проверки типов вашего кода, но не используется во время выполнения. То, что определено во время выполнения, определяется используемым вами загрузчиком Webpack, и я подозреваю, что он создает модуль с назначением экспорта вместо экспорта по умолчанию (поэтому ваше объявление типа неверно в отсутствиеesModuleInterop
). Попробуйте одно из предложенных мной изменений и посмотрите, не решит ли это проблему. (Если вы попробуете внести изменения в импорт, вам может потребоваться также заменитьexport default value
наexport = value
в объявлении типа.) - person Matt McCutchen   schedule 30.09.2018esModuleInterop
, тоimport Image2 from "../assets/author.png"
должно работать. Это выглядит как хорошее введение в различие между назначениями экспорта и экспортом по умолчанию, которое скрытоesModuleInterop
. - person Matt McCutchen   schedule 02.10.2018