我的误解是:
所有导入/必需的文件都将由loader转换.
但是,某些导入/必需的文件不需要转换.例如,已经处理了"node_module"中的js文件.因此,Babel装载机无需再次进行转换.这基本上就是我们在loader中需要"exclude:/ node_modules /"的原因.
同样,如果您知道要由加载器转换的文件,则可以使用"include".
简而言之,entry.js将包含所有导入/必需的文件.但在这些文件中,只有少数文件需要转换.这就是"装载机"引入"包括"和"排除"的原因.
我还不太清楚为什么我们需要在webpack的加载器中使用"include"或"exclude".
因为条目js文件总是需要递归地包含其导入/必需的js文件.所有导入/必需的文件都将由loader转换.如果是这种情况,为什么我们需要在装载机中"包含"或"排除"?
一个常见的情况是"exclude:/ node_modules /".令我困惑的是,如果条目js文件需要来自node_modules的一些文件,那么我们将排除node_modules.然后,最终的bundle文件将不包含node_modules中的requied文件.在这种情况下,最终的bundle.js将无法正常工作.我在这里错过了什么吗?
module.exports = {
entry: [
'./index.js'
],
output: {
path: path.join(__dirname,"public"),
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.js$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}]
}
};
Run Code Online (Sandbox Code Playgroud)
谢谢
德里克
从现在开始,我正在使用这个循环迭代数组的元素,即使我在其中放置具有各种属性的对象,它也能正常工作.
var cubes[];
for (i in cubes){
cubes[i].dimension
cubes[i].position_x
ecc..
}
Run Code Online (Sandbox Code Playgroud)
现在,让我们假设cubes []以这种方式声明
var cubes[][];
Run Code Online (Sandbox Code Playgroud)
我可以在Javascript中执行此操作吗?我怎样才能自动迭代
cubes[0][0]
cubes[0][1]
cubes[0][2]
cubes[1][0]
cubes[1][1]
cubes[1][2]
cubes[2][0]
ecc...
Run Code Online (Sandbox Code Playgroud)
作为一种解决方法,我可以声明:
var cubes[];
var cubes1[];
Run Code Online (Sandbox Code Playgroud)
并与两个数组分开工作.这是更好的解决方案吗?
我遇到过这种奇怪的事情:
ReferenceError: regeneratorRuntime is not defined
...我设法在一个非常小的环境中重现(与同一问题上类似的SO问题相比),并且还注意到一些奇怪的行为取决于是否使用了范围.
以下代码有效:
'use strict';
require('babel-polyfill');
{ // scope A (if you remove it you observe different behavior when .babelrc is present)
function *simplestIterator() {
yield 42;
}
for (let v of simplestIterator()) {
console.log(v);
}
}
Run Code Online (Sandbox Code Playgroud)
包裹是:
$ npm ls --depth 0
simple-babel-serverside-node-only-archetype@1.0.0 /home/mperdikeas/regeneratorRuntimeNotDefined
??? babel-cli@6.7.5
??? babel-core@6.7.6
??? babel-polyfill@6.7.4
??? babel-preset-es2016@6.0.11
??? babel-runtime@6.6.1
Run Code Online (Sandbox Code Playgroud)
内容.babelrc是:
$ cat .babelrc
{
"presets": ["es2016"]
}
Run Code Online (Sandbox Code Playgroud)
但是,当移除范围并将其simplestIterator置于全局范围时,它将失败并显示:
ReferenceError: regeneratorRuntime is not defined
Run Code Online (Sandbox Code Playgroud)
更奇怪的是,如果.babelrc …
我有一个应用程序,它是一个节点后端和一个反应前端。
当我尝试构建/运行节点应用程序时出现以下错误。
节点: v10.13.0
错误:
dist / index.js:314 regeneratorRuntime.mark(function _callee(productId){^
ReferenceError:未定义regeneratorRuntime
.babelrc
{
"presets": [ [
"@babel/preset-env", {
"targets": {
"node": "current"
},
}
], "@babel/preset-react"],
"plugins": [
"@babel/plugin-proposal-class-properties"
]
}
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
{
mode: "development",
entry: "./src/index.js",
target: "node",
externals: [nodeExternals()], // in order to ignore all modules in node_modules folder
stats: {
colors: true
},
devtool: "source-map",
output: {
path: path.resolve(__dirname, "dist"),
filename: "index.js",
sourceMapFilename: "index.js.map"
},
module: {
rules: [
{
enforce: "pre",
test: /\.js$/,
exclude: /node_modules/,
loader: …Run Code Online (Sandbox Code Playgroud) 我使用webpack-simple模板,配置如下:
的package.json
{
"name": "vue-wp-simple",
"description": "A Vue.js project",
"version": "1.0.0",
"author": "v",
"private": true,
"scripts": {
"dev": "webpack-dev-server --inline --hot",
"build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
},
"dependencies": {
"vue": "^2.3.3",
"vue-router": "^2.7.0",
},
"devDependencies": {
"babel-core": "^6.0.0",
"babel-loader": "^6.0.0",
"babel-preset-env": "^1.5.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"cross-env": "^3.0.0",
"css-loader": "^0.25.0",
"file-loader": "^0.9.0",
"style-loader": "^0.18.2",
"stylus": "^0.54.5",
"stylus-loader": "^3.0.1",
"vue-loader": "^12.1.0",
"vue-template-compiler": "^2.3.3",
"webpack": "^2.6.1",
"webpack-dev-server": "^2.4.5"
}
}
Run Code Online (Sandbox Code Playgroud)
.babelrc
{
"presets": [
["env", { "modules": false }],
]
} …Run Code Online (Sandbox Code Playgroud) 我无法获得异步/等待转换工作.我错过了什么?
我的.babelrc:
{
"presets": [ "es2015", "stage-0" ]
}
Run Code Online (Sandbox Code Playgroud)
我的package.json(剪掉):
{
"babel-core": "^6.1.2",
"babel-plugin-transform-runtime": "^6.1.2",
"babel-preset-es2015": "^6.1.2",
"babel-preset-stage-0": "^6.1.2"
}
Run Code Online (Sandbox Code Playgroud)
输出:
babel src/server
SyntaxError: src/server/index.js: Unexpected token (7:21)
5 |
6 | try {
> 7 | let server = await server('localhost', env.NODE_PORT || 3000)
| ^
8 | console.log(`Server started on ${server.info.uri}`)
9 | } catch (err) {
10 | console.error('Error starting server: ', err)
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用了browserify + gulp + babel,并且在ES7功能方面存在问题.这些是我安装的:
这是我的gulp代码:
gulp.task('build', () => {
let buildPath;
let destPath;
buildPath = `./src`;
destPath = `./dist`;
return browserify(`${buildPath}/app.js`)
.transform(babelify, {
presets: ["es2015", "es2016", "stage-0"],
plugins: ["transform-decorators-legacy", "transform-async-to-generator"]
})
.bundle()
.pipe(source('app.js'))
.pipe(buffer())
.pipe(sourcemaps.init({loadMaps: true}))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(`${destPath}`));
});
Run Code Online (Sandbox Code Playgroud)
这是我的js代码:
import 'babel-polyfill';
// Async Functions
function wait(t) {
return new Promise((r) => setTimeout(r, t));
}
async function asyncMania() {
console.log('1'); …Run Code Online (Sandbox Code Playgroud) 我正在使用带有 Axios的Electron Vue应用程序来调用我的 Laravel 服务器。在 Electron 的开发模式下,一切都很完美。但是,一旦我将 Electron 应用程序构建为安装程序并将其放在客户端计算机上,所有混乱就爆发了。我解决了一些问题,但这一个问题会杀了我。
简单地说,即使所有 Axios 都成功返回,它们也会抛出一个我在 .catch() 中放入的错误。老实说,我很困惑这怎么可能。例如,当我的程序加载时,它会进行一些调用以获取所需的信息。抛出错误并显示警报。我想这只是我的 Laravel 服务器。但是数据被成功抓取并添加到应用程序中。
axios.post(`${this.$store.state.URL}/get_server_ticket_from_table?api=${this.$store.state.API}`, {
id: this.ServerTicketMove.Server1.id,
table: this.ServerTicketMove.currentTable
})
.then((response) => {
console.log(response)
if (typeof response.data.id != 'undefined') {
this.ServerTicketMove.ticket = response.data
}
})
.catch(() => {
alert('Did not get Servers Table Information. Cant Connect to Main Server.')
})
Run Code Online (Sandbox Code Playgroud)
我做了一些谷歌搜索,看到了一些关于 CORS 的帖子。所以我在我的 Web 服务器和 Laravel 上完成并启用了它。这造成了更大的混乱。同样的错误,但这次没有数据应用于任何东西。所以 .then() 甚至没有被调用。最重要的是,在启用 CORS 的情况下,我的 Axios 似乎正在使用 OPTIONS 的请求方法进行额外的 HTTP 调用。为什么?我不认为 CORS 是我问题的答案。
同样在我的 Electron Vue background.js 中,我重新开启了网络安全。这是因为发展。这没有改变任何东西。
win …Run Code Online (Sandbox Code Playgroud) babeljs ×4
javascript ×4
webpack ×3
babel ×2
vue.js ×2
async-await ×1
axios ×1
babel-jest ×1
babel-loader ×1
browserify ×1
ecmascript-7 ×1
electron ×1
frontend ×1
generator ×1
gulp ×1
loops ×1
node.js ×1
reactjs ×1
vuejs2 ×1