【发布时间】:2019-09-06 22:24:49
【问题描述】:
我想在 Angular 7 中使用 raw-loader 将文本文件导入我的 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 {
}
我在 WebStorm 中看到 Cannot load module "example.txt" 错误,当我运行 ng build 时出现以下错误。
src/app/app.component.ts(2,17) 中的错误:错误 TS2307:找不到模块“example.txt”
所以我用谷歌搜索了如何解决这个问题,我找到了这个答案。
How to import JSON File into a TypeScript file?
然后我添加了一个/src/typings.d.ts 包含以下内容的文件,这修复了WebStorm 中的错误。
declare module "*.txt" {
const value: string;
export default value;
}
我再次运行ng build,错误消息变为找不到模块。
找不到模块:错误:无法解析“C:\work\temp\example\src\app”中的“example.txt”
经过长时间的谷歌搜索,我认为我需要使用自定义 webpack 配置向 Angular 添加一个 raw-loader。这让我看到了这篇带有说明的博文。
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"
},
我在与angular.json 相同的文件夹中创建extra-webpack.config.js,内容如下。
module.exports = {
module: {
rules: [
{
test: /\.txt$/,
use: 'raw-loader'
}
]
}
};
我尝试再次构建 ng build 但得到同样的错误。
找不到模块:错误:无法解析“C:\work\temp\example\src\app”中的“example.txt”
我一直无法超越这一点,到目前为止,我在 Google 上搜索到的所有内容似乎都暗示这是应该如何完成的。 Module not found 错误消息非常广泛,我找不到任何特定于 Angular 7 的信息。
【问题讨论】:
-
我看到你放了“Hello world”,但是你打算用example.txt作为静态字符串吗?
-
@Vega 我需要大字符串,它们也是捆绑包的一部分。我知道这可以通过 webpack 实现,因为我之前在其他 JavaScript 项目中已经这样做了。
标签: javascript angular typescript webpack