Então, eu estou escrevendo um aplicativo com o nó / express + jade combo.
Eu tenho client.js
, que é carregado no cliente. Nesse arquivo, eu tenho um código que chama funções de outros arquivos JavaScript. Minha tentativa foi usar
var m = require('./messages');
para carregar o conteúdo de messages.js
(como eu faço no lado do servidor) e, posteriormente, chamar funções desse arquivo. No entanto, require
não está definido no lado do cliente e gera um erro no formulário Uncaught ReferenceError: require is not defined
.
Esses outros arquivos JS também são carregados em tempo de execução no cliente porque eu coloco os links no cabeçalho da página da web. Portanto, o cliente conhece todas as funções que são exportadas desses outros arquivos.
Como chamo essas funções desses outros arquivos JS (como messages.js
) no client.js
arquivo principal que abre o soquete para o servidor?
<script src="messages.js"></script>
liga para eles depois disso?--require
opção do browserify fazrequire()
com que seja definida no lado do cliente. Veja: lincolnloop.com/blog/speedy-browserifying-multiple-bundlesRespostas:
Isso ocorre porque
require()
não existe no JavaScript do navegador / lado do cliente.Agora você terá que fazer algumas escolhas sobre o gerenciamento de scripts JavaScript do lado do cliente.
Você tem três opções:
<script>
tag.Commonjs cliente colaterais implementações incluem:
(a maioria deles exige uma etapa de construção antes da implantação)
Você pode ler mais sobre minha comparação entre o Browserify e o componente (obsoleto) .
As implementações da AMD incluem:
Observe que, em sua pesquisa para escolher qual deles, você lerá sobre o Bower . O Bower é apenas para dependências de pacotes e não é pioneiro em definições de módulos como CommonJS e AMD.
Espero que isso ajude alguns.
fonte
<script>
tag para importar uma classe React sem o uso de um gerenciador de pacotes nodeJs?Eu sou proveniente de um ambiente de elétrons, onde preciso da comunicação IPC entre um processo de renderizador e o processo principal. O processo do renderizador fica em um arquivo HTML entre as tags de script e gera o mesmo erro. A linha
lança o Uncaught ReferenceError: require não está definido
Consegui contornar isso especificando a integração do nó como verdadeira quando a janela do navegador (onde esse arquivo HTML está incorporado) foi criada originalmente no processo principal.
Isso resolveu o problema para mim. A solução foi proposta aqui . Espera que isso ajude outra pessoa. Felicidades.
fonte
ES6: No html, inclua o arquivo js principal usando o atributo
type="module"
( suporte ao navegador ):E no
script.js
arquivo inclua outro arquivo como esse:Dentro do arquivo incluído (
module.js
), você deve exportar a função / classe que você importaráExemplo de trabalho aqui .
fonte
val
no objeto janelawindow.val = val
. Aqui está Plunker: Plunker: plnkr.co/edit/aDyjyMxO1PdNaFh7ctBT?p=preview - Esta solução funcionaNo meu caso, usei outra solução.
Como o projeto não requer CommonJs e deve ter compatibilidade com ES3 (módulos não suportados), basta remover todas as instruções de exportação e importação do seu código , porque o seu tsconfig não contém
Mas use instruções de importação e exportação em seus arquivos referenciados
O código final gerado sempre terá (pelo menos para o texto datilografado 3.0) essas linhas
fonte
Mesmo usando isso não funcionará, acho que a melhor solução é o browserify:
fonte
Isso funcionou para mim
<script data-main="your-Scrpt.js" src="require.js"></script>
Nota!
use: -> require (['moudle-name']) em "your-script.js"
não requer ('moudle-name')const {ipcRenderer} = require (['electron'])
Não: const {ipcRenderer} = require ('electron')
fonte