Ci sono alcune opzioni disponibili per ottenere System.import
lavorare con isomorfica rendering/server-side:
Feature-rileva System
e polyfill
Node consente di chiamare require()
in un certo numero di posti e shimming System.import
come segue dovrebbe funzionare:
if (typeof System === "undefined") {
var System = {
import: function(path) {
return Promise.resolve(require(path));
}
};
}
Se stai cercando un'implementazione più solida, c'è anche es6-micro-loader, che implementa un polyfill System
che funziona sia nel browser sia nel nodo.
Usa babel-plugin-system-import-transformer sostituire System.import
con il modello UMD equivalente
cioè assume la seguente forma:
System.import('./utils/serializer').then(function(module){
console.log(module);
});
e trasforma giù a:
new Promise(function (resolve, reject) {
var global = window;
if (typeof global.define === 'function' && global.define.amd) {
global.require(['utilsSerializer'], resolve, reject);
} else if (typeof module !== 'undefined' && (module.exports && typeof require !== 'undefined') ||
typeof module !== 'undefined' && (module.component && (global.require && global.require.loader === 'component'))) {
resolve(require('./utils/serializer'));
} else {
resolve(global['utilsSerializer']);
}
}).then(function(module){
console.log(module);
});
o
Build with Webpack targeting Node (che utilizzerà richiedono per caricare pezzi):
webpack --target node
stai usando moduli CSS? sta succedendo quando importi il tuo CSS nel tuo componente? – QoP
Sì, le cose possono cadere quando si utilizzano le funzionalità dipendenti dal webpack sul server. Ho creato un boilerplate universale che usa webpack per raggruppare anche il codice del server. In questo modo puoi condividere di più tra il codice del server e quello del client. [Controllalo qui.] (Https://github.com/ctrlplusb/react-universally) Potrebbe essere un riferimento utile per te. Ho provato a commentare molto il materiale del webpack. – ctrlplusb