やあ、
私が開発しているPOCの一部として、Angularアプリがrequirejsで動作できるようにする小さなサンプルを用意しました。 今、私はJsHintを統合することを計画しています。 唯一の要件は、nodejsがないことです。
リリースのdistフォルダーからjsファイルを取得し、requireモジュールとしてロードしました。 しかし、そうすると、次のエラーが発生します
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']);
}
);
アンダースコアは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 ...
対照的に、
- JSHINTv2.6.3のサンプルは機能します。
- v.2.7.0のサンプルは失敗
何か案が?
2.6.3以降、アンダースコアからLodashに変更されました。
'var _ = require( "underscore");'を確認してください 2.6.3および 'var _ = require( "lodash");' 2.12.10で
最も参考になるコメント
どういうわけか、requirejs(または一般的にAMD)が存在すると、lodashのロードが失敗します。
v2.6.3では機能しますが、v2.7.0では失敗し始めます
v2.9.3のサンプルを示す
対照的に、
何か案が?