我需要在react中解析一个JSX字符串,就像其他thread一样。
唯一的反应是使用babel-core,不幸的是它不工作,也不知道从这里到哪里去。下面是我在我的文件中使用require('babel-core')时得到的错误跟踪:
2016-10-27 16:07:38,914 [INFO] vm-agent.webpack: WARNING in ./~/babel-core/lib/transformation/file/index.js
2016-10-27 16:07:38,914 [INFO] vm-agent.webpack: Critical dependencies:
2016-10-27 16:07:38,914 [INFO] vm-agent.webpack: 510:24-39 the request of a dependency is an expression
2016-10-27 16:07:38,914 [INFO] vm-agent.webpack: 709:16-34 the request of a dependency is an expression
2016-10-27 16:07:38,915 [INFO] vm-agent.webpack: @ ./~/babel-core/lib/transformation/file/index.js 510:24-39 709:16-34
2016-10-27 16:07:38,915 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,915 [INFO] vm-agent.webpack: ERROR in ./~/babel-core/lib/api/node.js
2016-10-27 16:07:38,915 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'fs' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/babel-core/lib/api
2016-10-27 16:07:38,915 [INFO] vm-agent.webpack: @ ./~/babel-core/lib/api/node.js 58:10-23
2016-10-27 16:07:38,922 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,922 [INFO] vm-agent.webpack: ERROR in ./~/babel-core/lib/transformation/file/options/build-config-chain.js
2016-10-27 16:07:38,922 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'fs' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/babel-core/lib/transformation/file/options
2016-10-27 16:07:38,922 [INFO] vm-agent.webpack: @ ./~/babel-core/lib/transformation/file/options/build-config-chain.js 31:10-23
2016-10-27 16:07:38,923 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,923 [INFO] vm-agent.webpack: ERROR in ./~/babel-core/lib/helpers/resolve.js
2016-10-27 16:07:38,923 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'module' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/babel-core/lib/helpers
2016-10-27 16:07:38,923 [INFO] vm-agent.webpack: @ ./~/babel-core/lib/helpers/resolve.js 34:14-31
2016-10-27 16:07:38,923 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack: ERROR in ./~/convert-source-map/index.js
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'fs' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/convert-source-map
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack: @ ./~/convert-source-map/index.js 2:9-22
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack: ERROR in ./~/debug/node.js
2016-10-27 16:07:38,924 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'fs' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/debug
2016-10-27 16:07:38,925 [INFO] vm-agent.webpack: @ ./~/debug/node.js 163:15-28
2016-10-27 16:07:38,925 [INFO] vm-agent.webpack:
2016-10-27 16:07:38,925 [INFO] vm-agent.webpack: ERROR in ./~/debug/node.js
2016-10-27 16:07:38,925 [INFO] vm-agent.webpack: Module not found: Error: Cannot resolve module 'net' in /opt/.pyenv/versions/3.5.2/envs/vma/ui_cache/node/node_modules/debug如有必要,这里是我的webpack文件:
module.exports = {
entry: './src/app.js',
output: {
path: './react',
filename: 'main.js'
},
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
},
{ test: /\.json$/, loader: 'json-loader' },
]
},
resolve: {
extensions: ['', '.js', '.json']
}
};发布于 2017-08-17 16:11:01
当我在前端使用它时,我也遇到了同样的问题。现在我在服务器端使用它,并使用以下命令将结果转换为json:
JSON.stringify(require("babel-core").transform(code, {
presets: ["react"]
}))
它起作用了,但我不能评估结果。
编辑:所以我设法通过使用这个线程Specify scope for eval() in JavaScript?的答案来评估结果
var evalReact = function(React) {
var React = React
return function(str) {return eval(str)}
}
let fnEvalReact = evalReact(React)
var Compo = fnEvalReact(JSON.parse(component).code)
发布于 2020-11-29 06:33:23
这是一个相当老的问题,但我遇到了类似的问题,并发现了this问题。似乎一种解决方案是使用以下命令更新您的webpack文件:
module.exports = {
//...
node: {
fs: 'empty',
}
};所有的功劳都归功于Melchia的解释:“当你的平台不支持文件系统时,你也可能会遇到这个问题。所以尝试将这一行添加到你的webpack.config.js中,以添加相应的pollyfills。”
https://stackoverflow.com/questions/40289652
复制相似问题