I'm having trouble importing JSON file to my environment file in Angular 7 library.
My environment.ts
file looks like this:
import firebase from './firebase.json';
export const environment = {
production: false,
firebase,
};
And firebase.json
:
{
"apiKey": "",
"authDomain": "",
"databaseURL": "",
"projectId": "",
"storageBucket": "",
"messagingSenderId": ""
}
But unfortunately when running ng build
it fails:
> [email protected] 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! [email protected] build: `ng build sdk`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] 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
I've tried already:
1) Adding to tsconfig.json
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"noImplicitAny": false,
2) Adding typings.d.ts
with
declare module '*.json' {
const value: any;
export default value;
}
3) Changing import
to require
But no luck so far.
My devDependencies include:
"@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",
...
After a lot of suffering we found that solution here.
It's basically what you've done in the first try, but you need to add one option more.
"resolveJsonModule": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true
Additionally:
"annotateForClosureCompiler": false
Note: for the last prop, that's the same file but instead of adding it to the compilerOptions
, add it to angularCompilerOptions
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With