标签: es6-module-loader

将lodash导入angular2 + typescript应用程序

我很难尝试导入lodash模块.我使用npm + gulp设置我的项目,并继续击中同一面墙.我尝试过常规的lodash,还有lodash-es.

lodash npm包:(包根文件夹中有一个index.js文件)

import * as _ from 'lodash';    
Run Code Online (Sandbox Code Playgroud)

结果是:

error TS2307: Cannot find module 'lodash'.
Run Code Online (Sandbox Code Playgroud)

lodash-es npm包:(在lodash.js中有一个defaut导出我的包根文件夹)

import * as _ from 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)

结果是:

error TS2307: Cannot find module 'lodash-es'.   
Run Code Online (Sandbox Code Playgroud)

gulp任务和webstorm都报告了同样的问题.

有趣的是,这不会返回错误:

import 'lodash-es/lodash';
Run Code Online (Sandbox Code Playgroud)

......但当然没有"_"......

我的tsconfig.json文件:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我的gulpfile.js:

var gulp = require('gulp'),
    ts = require('gulp-typescript'),
    uglify = require('gulp-uglify'),
    sourcemaps = require('gulp-sourcemaps'),
    tsPath = …
Run Code Online (Sandbox Code Playgroud)

javascript typescript lodash es6-module-loader angular

246
推荐指数
8
解决办法
16万
查看次数

"你可能需要一个合适的加载器来处理这个文件类型"与Webpack和Babel

我试图使用Webpack与Babel编译ES6资产,但我收到以下错误消息:

You may need an appropriate loader to handle this file type.
| import React from 'react';
| /*
| import { render } from 'react-dom'
Run Code Online (Sandbox Code Playgroud)

这是我的Webpack配置的样子:

var path = require('path');
var webpack = require('webpack');

module.exports = {
  entry: './index',
  output: {
    path: path.join(__dirname, 'dist'),
    filename: 'bundle.js',
    publicPath: '/dist/'
  },
  module: {
    loaders: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader',
        exclude: /node_modules/
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

以下是使用Webpack的中间件步骤:

var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var config = require('./webpack.config');

var express …
Run Code Online (Sandbox Code Playgroud)

javascript webpack babeljs es6-module-loader

99
推荐指数
6
解决办法
19万
查看次数

WebStorm中导入的路径别名

我使用webpack路径别名来加载ES6模块.

例如,如果我定义别名utils而不是类似的东西
import Foo from "../../../utils/foo",我可以这样做
import Foo from "utils/foo"

问题是,一旦我开始使用别名,WebStorm就会失去对导入的跟踪,并且我会留下警告并且没有自动完成.

有没有办法指示WebStorm使用这些别名?

javascript webstorm webpack es6-module-loader

71
推荐指数
7
解决办法
3万
查看次数

哪些浏览器支持ECMAScript 6的导入和导出语法?

我目前正在使用MEAN Stack编写Web应用程序,并尝试在ECMAScript 6 JavaScript中编写代码; 但是,在使用导入和导出语法时,我在Chrome和Firefox中都出现错误.目前是否有任何浏览器完全支持ECMAScript 6?

请注意:我不是在询问浏览器何时支持ECMAScript 6.我问的是哪些浏览器支持ECMAScript 6导入和导出语法.请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla#Features_not_yet_supported_by_Firefox

javascript browser-support ecmascript-6 es6-module-loader es6-modules

38
推荐指数
4
解决办法
3万
查看次数

如何修复这个ES6模块循环依赖?

编辑:有关更多背景,请参阅ES讨论的讨论.


我有三个模块A,BC.AB导入从模块的默认出口C和模块C导入的默认从两个AB.但是,模块C不依赖于从模块评估期间AB模块评估期间导入的值,仅在运行时在评估所有三个模块之后的某个时间点.模块AB 依赖于进口值C的模块评估期间.

代码看起来像这样:

// --- Module A

import C from 'C'

class A extends C {
    // ...
}

export {A as default}
Run Code Online (Sandbox Code Playgroud)

.

// --- Module B

import C from 'C'

class B extends C {
    // ...
}

export {B as default}
Run Code Online (Sandbox Code Playgroud)

.

// --- …
Run Code Online (Sandbox Code Playgroud)

javascript module es6-module-loader

35
推荐指数
3
解决办法
7868
查看次数

我可以使用ES6/2015模块导入在"全局"范围内设置引用吗?

我有这种情况,我试图导入一个现有的库,我将调用troublesome(使用Webpack/Babel FWIW),它有一个全局引用jQuery,我试图使用模块语法解决它.

我已成功将jquery导入模块的"本地"范围,通过:

import jQuery from 'jquery'
Run Code Online (Sandbox Code Playgroud)

所以我试过了:

import jQuery from 'jquery'    
import 'troublesome'
Run Code Online (Sandbox Code Playgroud)

但也许并不奇怪,我得到的东西就像jQuery is not a function踢回来一样troublesome.js

我也试过这个:

System.import('jquery')
.then(jQuery => {
    window.jQuery = jQuery
})
import 'troublesome'
Run Code Online (Sandbox Code Playgroud)

但是,事实证明这System.import是所谓的"模块加载器"规范的一部分,该规范是从es6/2015规范中提取的,所以它不是由Babel提供的.有一个poly-fill,但Webpack无法管理通过调用完成的动态导入System.import.

但是......如果我在index.html中调出脚本文件,就像这样:

<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/troublesome/troublesome.js"></script>
<script src="the-rest-of-my-js.js"></script>
Run Code Online (Sandbox Code Playgroud)

jQuery解决了引用troublesome.js并且事情很好,但我宁愿避免脚本标记路由,因为webpack不管理这些.

任何人都可以推荐一个体面的策略来处理这样的场景吗?

更新

在@ TN1ck的一些指导下,我最终能够使用imports-loader识别一个以Webpack为中心的解决方案

此解决方案的配置如下所示:

  //...
  module: {
    loaders: [
      //...
      {
        test: require.resolve('troublesome'),
        loader: "imports?jQuery=jquery,$=jquery"
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 webpack es6-module-loader

34
推荐指数
1
解决办法
2万
查看次数

ES6:从URL导入模块

是否可以从ES6中的外部URL导入javascript模块?

我试过(使用babel-node):

import mymodule from 'http://...mysite.../myscript.js';
// Error: Cannot find module 'http://...mysite.../myscript.js'
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6 es6-module-loader

34
推荐指数
4
解决办法
4万
查看次数

如何在单个文件组件中扩展另一个VueJS组件?(ES6 vue-loader)

我正在使用vue-loader(http://vuejs.github.io/vue-loader/start/spec.html)来构建我的*.vue单文件组件,但是我在扩展单文件组件时遇到了问题从另一个.

如果一个组件遵循规范export default { [component "Foo" definition] },我认为这只是导入此组件的问题(就像我对任何子组件一样)然后export default Foo.extend({ [extended component definition] })

不幸的是,这不起作用.有人可以提供建议吗?

javascript ecmascript-6 vue.js es6-module-loader

29
推荐指数
4
解决办法
3万
查看次数

ES6导入的定义执行顺序是什么?

我试过在互联网上搜索导入模块的执行顺序.例如,假设我有以下代码:

import "one"
import "two"
console.log("three");
Run Code Online (Sandbox Code Playgroud)

其中one.jstwo.js定义如下:

// one.js
console.log("one");

// two.js
console.log("two");
Run Code Online (Sandbox Code Playgroud)

控制台输出是否保证为:

one
two
three
Run Code Online (Sandbox Code Playgroud)

还是未定义?

javascript ecmascript-6 es6-module-loader

28
推荐指数
2
解决办法
6995
查看次数

如何使用ES2015语法导入从文件导出的所有内容?有通配符吗?

使用ES2015语法,我们有了新的导入语法,我一直在试图弄清楚如何将从一个文件导出的所有内容导入另一个文件,而不必将其包装在一个对象中,即.就好像它们是在同一个文件中定义的一样.

所以,基本上,这个:

// constants.js

const MYAPP_BAR = 'bar'
const MYAPP_FOO = 'foo'
Run Code Online (Sandbox Code Playgroud)
// reducers.js

import * from './constants'

console.log(MYAPP_FOO)
Run Code Online (Sandbox Code Playgroud)

这不起作用,至少根据我的Babel/Webpack设置,这种语法无效.

备择方案

这样可行(但如果你需要输入的东西多于一些东西,那就很长而烦人):

// reducers.js

import { MYAPP_BAR, MYAPP_FOO } from './constants'

console.log(MYAPP_FOO)
Run Code Online (Sandbox Code Playgroud)

就像这样(但它将对象包装在一个对象中):

// reducers.js

import * as consts from './constants'

console.log(consts.MYAPP_FOO)
Run Code Online (Sandbox Code Playgroud)

是否有第一个变体的语法,或者您必须按名称导入每个东西,还是使用包装器对象?

javascript ecmascript-6 es6-module-loader

27
推荐指数
2
解决办法
2万
查看次数