Я хочу использовать raw-загрузчик с моим Angular 7 для импорта текстовых файлов в мой исходный код TypeScript. Я нашел много информации по этому вопросу и провел несколько часов, пытаясь заставить его работать, но я не могу заставить его работать.
Я начинаю с создания нового проекта
ng new example --defaults --minimal
Я создаю текстовый файл на /src/app/example.txt
с сообщением «Hello World»
Затем я изменяю файл app.component.ts
, чтобы импортировать этот текстовый файл.
import {Component} from '@angular/core';
import str from 'example.txt';
alert(str);
@Component({
selector: 'app-root',
template: ``,
styles: []
})
export class AppComponent {
}
Я вижу ошибку Cannot load module "example.txt"
в WebStorm, и когда я запускаю ng build
, я получаю следующую ошибку.
ОШИБКА в src / app / app.component.ts (2,17): ошибка TS2307: Не удается найти модуль 'example.txt'
Так что я гуглил, как решить эту проблему, и нашел этот ответ.
Как импортировать файл JSON в файл TypeScript?
Затем я добавляю файл /src/typings.d.ts
со следующим содержимым, и это исправляет ошибку в WebStorm.
declare module "*.txt" {
const value: string;
export default value;
}
Я снова запускаю ng build
, и сообщение об ошибке меняется, говоря, что он не может найти модуль.
Модуль не найден: Ошибка: не удается разрешить файл «example.txt» в «C: \ work \ temp \ example \ src \ app»
После долгого поиска в Google, я думаю, что мне нужно добавить raw-загрузчик в Angular, используя пользовательскую конфигурацию веб-пакета. Что приводит меня к этому сообщению в блоге с инструкциями.
https://codeburst.io/customizing-angular-cli-6-build-an-alternative-to-ng-eject-a48304cd3b21
Итак, я устанавливаю custom-webpack
npm i -D @angular-builders/custom-webpack
Я редактирую свой angular.json
так, чтобы при сборке использовался extra-webpack.config.js
вот так.
"builder": "@angular-builders/custom-webpack:browser",
"options": {
"customWebpackConfig": {
"path": "./extra-webpack.config.js"
},
Я создаю extra-webpack.config.js
в той же папке, что и angular.json
со следующим содержимым.
module.exports = {
module: {
rules: [
{
test: /\.txt$/,
use: 'raw-loader'
}
]
}
};
Я пытаюсь построить снова ng build
, но получаю ту же ошибку.
Модуль не найден: Ошибка: не удается разрешить файл «example.txt» в «C: \ work \ temp \ example \ src \ app»
Мне не удалось обойти эту точку, и все, что я до сих пор гуглял, похоже, подразумевает, что это как это должно быть сделано. Module not found
Сообщения об ошибках очень широки, и я не могу найти ничего специфического для Angular 7.