angular - Angular Universal 无法解析 .json 文件
问题描述
我构建了 Angular Universal (SSR) 应用程序。现在我为快递服务器安装了软件包。在那个包里面有这样的行:
require(./package)
- >这不起作用(角度无法解决它)因为角度需要它喜欢require(./package.json)
require(../folderdir)
- >这不起作用(角度无法解决它)因为角度需要它喜欢require(../folderdir/index.json)
我怎样才能告诉 Angular Universal 也解决.json
扩展?
PS 我使用 angular cli,我没有要修改的 webpack 配置文件。
解决方案
步骤:1-更新您的 package.json 以便您可以在客户端浏览器npm-package.json上使用 fs 模块
"browser": {
"fs": false,
"os": false,
"path": false
}
使用 fs 模块读取.json file
import {Observable} from "rxjs/Observable";
import {TranslateLoader} from '@ngx-translate/core';
declare var require: any;
import {join} from 'path';
const fs = require('fs');
export class Loader {
getJson(){
const assets_folder = join(process.cwd(), 'dist', 'server', this.prefix);
const jsonData = JSON.parse(fs.readFileSync(`${assets_folder}/${lang}${this.suffix}`, 'utf8'));
return jsonData;
}
}
或者你可以直接导入整个 json 文件
import * as indexJSON from 'assets/index.json';
use indexJSON where ever you want.
或者
将文件添加typings.d.ts
到项目的根文件夹,内容如下
declare module "*.json" {
const value: any;
export default value;
}
然后像这样导入您的数据:
import * as data from './example.json';
2019 年 7 月更新:
Typescript 2.9 ([docs][2]) 引入了一个更好、更智能的解决方案。脚步:
- 在您的文件中添加
resolveJsonModule
此行的支持:tsconfig.json
"compilerOptions": {
...
"resolveJsonModule": true
}
import 语句现在可以假定默认导出:
import data from './example.json';
信用
推荐阅读
- javascript - javascript 强制 ASP.NET 表单重新加载与 JQuery 自动完成文本框填充冲突?
- r - 在 R 中应用逐行转换,以便每行的总百分比为 100%
- java - 使用 Dagger2 Android 刷新 Oauth2
- laravel - 如何在没有 npm 的情况下安装 laravel/breeze?
- git - 合并没有引入合并的更改
- php - 如何修复 laravel 表单提交?
- python - “消息”对象没有属性“用户”
- python - 有没有办法自动回答弹出的警报框?
- javascript - array.find 返回多个结果
- javascript - 如何在javascript中通过给定的id查找对象的所有数据