Skip to content

Commit 08d3dd3

Browse files
Use Node vm instead of eval
1 parent c04aab0 commit 08d3dd3

File tree

2 files changed

+9
-3
lines changed

2 files changed

+9
-3
lines changed

src/React.NodeServices/NodeJsEngine.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@ private NodeJsEngine(INodeJSService nodeJSService)
1919
_nodeJSService = nodeJSService;
2020
}
2121

22-
private string WrapAsModule(string code) => $"let wrappedCode = () => eval({JsonConvert.SerializeObject(code, _settings)}); module.exports = function(callback, message) {{ callback(null, wrappedCode()); }}";
22+
private string WrapAsModule(string code) => $"let wrappedCode = () => vm.runInContext({JsonConvert.SerializeObject(code, _settings)}, vmContext ); module.exports = function(callback, message) {{ callback(null, wrappedCode()); }}";
23+
24+
public static INodeJsEngine CreateEngine(INodeJSService nodeJSService)
25+
{
26+
var engine = new NodeJsEngine(nodeJSService);
27+
engine._nodeJSService.InvokeFromStringAsync("let wrappedCode = () => { global.vmContext = {}; vm.createContext(global.vmContext); }; module.exports = function(callback, message) {{ callback(null, wrappedCode()); }}").ConfigureAwait(false).GetAwaiter().GetResult();
28+
return engine;
29+
}
2330

24-
public static INodeJsEngine CreateEngine(INodeJSService nodeJSService) => new NodeJsEngine(nodeJSService);
2531
public string Name => throw new NotImplementedException();
2632

2733
public string Version => throw new NotImplementedException();

src/React.Sample.Webpack.CoreMvc/webpack.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module.exports = {
66
},
77
output: {
88
filename: '[name].js',
9-
globalObject: 'global',
9+
globalObject: 'this',
1010
path: path.resolve(__dirname, 'wwwroot/dist'),
1111
publicPath: 'dist/'
1212
},

0 commit comments

Comments
 (0)