Jshint: JSHintをrequirejsモジュールとして含めると、エラーがスローされます

作成日 2016年01月21日  ·  5コメント  ·  ソース: jshint/jshint

やあ、

私が開発しているPOCの一部として、Angularアプリがrequirejsで動作できるようにする小さなサンプルを用意しました。 今、私はJsHintを統合することを計画しています。 唯一の要件は、nodejsがないことです。

リリースのdistフォルダーからjsファイルを取得し、requireモジュールとしてロードしました。 しかし、そうすると、次のエラーが発生します
jshint_error

Uncaught TypeError:_。eachは関数ではありません

私がロードした他のすべてのモジュールは、ブートストラップや角度のように問題ありません。 underscore.jsを含めて、jshintの前にロードしようとしましたが、役に立ちませんでした。

これはjshintのバグですか、それとも何か間違ったことをしていますか。 以下は私のrequirejsブートストラップのコードです

require.config({
baseUrl: 'スクリプト'、
パス:{
'jshint': 'lib / jshint / jshint'、
'angular': 'lib / angular / angular.min'、
'angular-route': 'lib / angular / angular-route.min'

},
shim: {
    'app': {
        deps: ['jshint','angular', 'angular-route']
    },
    'angular-route': {
        deps: ['angular']
    }
}

});

必須
((
[
'アプリ'
]、
関数(アプリ)
{{
angle.bootstrap(document、['app']);
}
);

最も参考になるコメント

どういうわけか、requirejs(または一般的にAMD)が存在すると、lodashのロードが失敗します。
v2.6.3では機能しますが、v2.7.0では失敗し始めます

v2.9.3のサンプルを示す

VM104 jshint.js:15777 
Uncaught TypeError: _.each is not a function
  require.14.lodash @ VM104 jshint.js:15777
  s @ VM104 jshint.js:6
  (anonymous function) @ VM104 jshint.js:6
  ...

対照的に、

何か案が?

全てのコメント5件

アンダースコアはjshintの依存関係としてマークされていないことを期待します。 また、現代のjshintはlodashを使用しているので、疑わしいとはいえ、lodashとの互換性の問題があるかもしれません。

ただ唾を吐く

私は同じ問題に直面しています...回避策はありますか?

どういうわけか、requirejs(または一般的にAMD)が存在すると、lodashのロードが失敗します。
v2.6.3では機能しますが、v2.7.0では失敗し始めます

v2.9.3のサンプルを示す

VM104 jshint.js:15777 
Uncaught TypeError: _.each is not a function
  require.14.lodash @ VM104 jshint.js:15777
  s @ VM104 jshint.js:6
  (anonymous function) @ VM104 jshint.js:6
  ...

対照的に、

何か案が?

SystemJSでは、 https://github.com/systemjs/systemjs/blob/master/docs/module-formatsに従って、メタでフォーマットをglobal (AMDやCommonJSではなく)として指定する必要があります。 md#globals

SystemJS.config({
    baseURL: './js',
    defaultJSExtensions: true,
    paths: {
        'jquery': './js/vendor/jquery/jquery-3.2.1.min.js',
        // ...
    },
    meta: {
        './js/vendor/codemirror/addon/lint/jshint.js': { format: 'global' }
    }
});
SystemJS.import('./js/app.js').then(function (app) {
    // ...
})

Webpackがフォーマットを自動的に検出することに注意してください。

うまくいけば、これはrequireJSに役立つでしょう。

どういうわけか、requirejs(または一般的にAMD)が存在すると、lodashのロードが失敗します。
v2.6.3では機能しますが、v2.7.0では失敗し始めます

v2.9.3のサンプルを示す

VM104 jshint.js:15777 
Uncaught TypeError: _.each is not a function
  require.14.lodash @ VM104 jshint.js:15777
  s @ VM104 jshint.js:6
  (anonymous function) @ VM104 jshint.js:6
  ...

対照的に、

何か案が?

2.6.3以降、アンダースコアからLodashに変更されました。
'var _ = require( "underscore");'を確認してください 2.6.3および 'var _ = require( "lodash");' 2.12.10で

このページは役に立ちましたか?
0 / 5 - 0 評価