Как импортировать файл JSON в библиотеку Angular? - PullRequest
2 голосов
/ 10 апреля 2019

У меня проблемы с импортом файла JSON в файл среды в библиотеке Angular 7.Мой environment.ts файл выглядит так:

import firebase from './firebase.json';

export const environment = {
  production: false,
  firebase,
};

И firebase.json:

{
  "apiKey": "",
  "authDomain": "",
  "databaseURL": "",
  "projectId": "",
  "storageBucket": "",
  "messagingSenderId": ""
}

Но, к сожалению, при запуске ng build происходит сбой:

> sdk@0.0.0 build <path-to-project>/sdk
> ng build sdk

Building Angular Package
Building entry point 'sdk'
Compiling TypeScript sources through ngc
Bundling to FESM2015

BUILD ERROR
Unexpected token / in JSON at position 0
SyntaxError: Unexpected token / in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.transform (<path-to-project>/sdk/node_modules/rollup-plugin-json/dist/rollup-plugin-json.cjs.js:18:20)
    at <path-to-project>/sdk/node_modules/rollup/dist/rollup.js:20962:25

Unexpected token / in JSON at position 0
SyntaxError: Unexpected token / in JSON at position 0
    at JSON.parse (<anonymous>)
    at Object.transform (<path-to-project>/sdk/node_modules/rollup-plugin-json/dist/rollup-plugin-json.cjs.js:18:20)
    at <path-to-project>/sdk/node_modules/rollup/dist/rollup.js:20962:25
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sdk@0.0.0 build: `ng build sdk`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sdk@0.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     xxx/.npm/_logs/2019-04-10T13_40_47_486Z-debug.log

Я уже пробовал:

1) Добавление к tsconfig.json

"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"noImplicitAny": false,

2) Добавление typings.d.ts с

declare module '*.json' {
  const value: any;
  export default value;
}

3) Изменение import до require

Но пока не повезло.

Мои devDependencies включают в себя:

"@angular-devkit/build-ng-packagr": "^0.13.8",
"@angular/cli": "~7.3.6",
"@angular/common": "~7.2.0",
"@angular/compiler": "^7.2.12",
"@angular/compiler-cli": "^7.2.12",
...

1 Ответ

1 голос
/ 25 апреля 2019

После многих страданий мы нашли это решение здесь .

Это в основном то, что вы сделали с первой попытки, но вам нужно добавить еще одну опцию.

"resolveJsonModule": true,  
"esModuleInterop": true,
"allowSyntheticDefaultImports": true

Дополнительно:

annotateForClosureCompiler: false

Примечание: для последнего реквизита это тот же файл, но вместо добавления его в compilerOptions добавьте его в angularCompilerOptions

...