これは私を数時間困惑させました。スクリプトがrequirejs以外のjavascriptファイルにある場合は、正常に機能します。RequireJSで使用すると、機能せず、質問のタイトルにエラーメッセージが表示されます(ただし、firebugコンソール)。
モジュールにリファクタリングする前に、RequireJSで「動作」させようとしていました。
HTMLは正しくレンダリングされています。スクリプトは正しく読み込まれています。また、require-jquery.jsバンドルのダウンロードを使用しています。これは、すべてのページのレイアウトテンプレートで参照されています。
main.js:
require.config({
paths: {
"maximum-filesize": "modules/validation/maximum-filesize"
}
});
require(["maximum-filesize", "domReady!"], function (maxFileSize) {
});
maximum-filesize.js
require.config({
paths: {
"jquery-validate": "libs/jquery/jquery.validate",
"jquery-validate-unobtrusive": "libs/jquery/jquery.validate.unobtrusive"
}
});
define(["jquery", "jquery-validate", "jquery-validate-unobtrusive", "domReady!"], function ($) {
$.validator.unobtrusive.adapters.add(
'filesize', ['maxsize'], function(options) {
options.rules['filesize'] = options.params;
if (options.messages) {
options.messages['filesize'] = options.message;
}
});
$.validator.addMethod('filesize', function (value, element, params) {
if (element.files.length < 1) {
// No files selected
return true;
}
if (!element.files || !element.files[0].size) {
// This browser doesn't support the HTML5 API
return true;
}
return element.files[0].size < params.maxsize;
}, '');
});
編集1
上記のすべてのコードをコメントアウトして、単純なものに置き換えてみました。
$('#Name').val("Hello");
これにより、#Nameテキストボックスで「Hello」が正しくレンダリングされたため、JQueryが機能しています。