Como posso acessar um arquivo json no Ecmascript 6? O seguinte não funciona:
import config from '../config.json'
Isso funciona bem se eu tentar importar um arquivo JavaScript.
json
import
ecmascript-6
Nikita Jajodia
fonte
fonte
webpack
ejson-loader
com ele.Respostas:
Uma solução simples:
config.js
então...
não permite a importação de arquivos .json existentes, mas executa um trabalho.
fonte
"postbuild": "node myscript.js"
etapa no meu arquivo package.json que usa o arquivo replace-in-file para fazer isso por mim. myscript.js const replace = require('replace-in-file'); const options = { files: '_demo/typedocs/navexReact.td.js', from: /{/, to: 'export default {', }; const convertJsonOutputToJsModule = async () => { try { const changes = await replace(options) console.log('Converted json to module in files:', changes.join(', ')); } catch (error) { console.error('Error occurred:', error); } } convertJsonOutputToJsModule()
No TypeScript ou usando o Babel, você pode importar o arquivo json no seu código.
Referência: https://hackernoon.com/import-json-into-typescript-8d465beded79
fonte
Loading failed for the module with source "example.json"
; no Chrome, recebo "Falha ao carregar o script do módulo: o servidor respondeu com um tipo MIME não JavaScript de" application / json ". A verificação estrita do tipo MIME é aplicada para scripts de módulo por especificação de HTML."tsc
mas não é isso que está acontecendo. Estou tentando executar os módulos ES6 nativamente no navegador (<script type="module">
) e os erros acima são os que você obtém se executar essaimport
linha diretamente. Corrija-me se estiver errado e você realmente quis dizer que é possível importar do JSON no ES6 real.import
instrução para um nórequire()
(tente!), E o segundo link não diz nada sobre as importações JSON. O problema aqui não está no analisador ou no sistema de módulos, é no carregador - o carregador do navegador não resolverá uma importação para outra coisa que não seja o Javascript. Sob o capô, você sempre precisa usar uma chamada AJAX (buscar / XHR) e analisar o resultado, mesmo que sua cadeia de ferramentas de compilação abstraia isso.Infelizmente, o ES6 / ES2015 não suporta o carregamento de JSON através da sintaxe de importação do módulo. Mas ...
Existem várias maneiras de fazer isso. Dependendo das suas necessidades, você pode examinar como ler arquivos em JavaScript (
window.FileReader
pode ser uma opção se estiver executando no navegador) ou usar alguns outros carregadores, conforme descrito em outras perguntas (supondo que você esteja usando o NodeJS).A maneira mais simples da IMO é provavelmente colocar o JSON como um objeto JS em um módulo ES6 e exportá-lo. Dessa forma, você pode simplesmente importá-lo onde precisar.
Também é importante notar que, se você estiver usando o Webpack, a importação de arquivos JSON funcionará por padrão (desde
webpack >= v2.0.0
).fonte
Estou usando o babel + browserify e tenho um arquivo JSON em um diretório ./i18n/locale-en.json com espaço para nome traduções (para ser usado com ngTranslate).
Sem precisar exportar nada do arquivo JSON (o que não é possível), eu poderia fazer uma importação padrão de seu conteúdo com esta sintaxe:
fonte
Se você estiver usando o nó, poderá:
OU
Outro:
OU
fonte
Dependendo das ferramentas de construção e da estrutura de dados no arquivo JSON, pode ser necessário importar o arquivo
default
.por exemplo, uso dentro
Next.js
fonte
resolveJsonModule
estejatrue
dentro de vocêtsconfig.json
.Um pouco tarde, mas me deparei com o mesmo problema ao tentar fornecer análises para meu aplicativo da web que envolvia o envio da versão do aplicativo com base na versão package.json.
A configuração é a seguinte: React + Redux, Webpack 3.5.6
O json-loader não está fazendo muito desde o Webpack 2+, então, depois de algumas brincadeiras, acabei removendo-o.
A solução que realmente funcionou para mim foi simplesmente usar a busca. Embora isso provavelmente imponha algumas alterações de código para se adaptar à abordagem assíncrona, funcionou perfeitamente, especialmente considerando o fato de que a busca oferecerá decodificação json em tempo real.
Então aqui está:
Lembre-se de que, como estamos falando do package.json especificamente aqui, o arquivo geralmente não é incluído na sua compilação de produção (ou mesmo no dev), portanto, você precisará usar o CopyWebpackPlugin para ter acesso a ao usar buscar.
fonte
file:///
URLs, o que não é o que está ocorrendo aqui.Em um navegador com busca (basicamente todos agora):
No momento, não podemos
import
arquivos com um tipo mime JSON, apenas arquivos com um tipo mime JavaScript. Pode ser um recurso adicionado no futuro ( discussão oficial ).No Node.js v13.2 +:
Atualmente, requer o
--experimental-json-modules
sinalizador , caso contrário, não é suportado por padrão.Tente correr
e veja o conteúdo obj gerado no console.
fonte