require 文を呼び出すと未定義エラーとなります

  • Kintoneのお作法を学習しながら現在開発をしております。
  • 基礎的なところでの理解不足があればご指摘ください。

何を実現したいのかを書きましょう

  • 過去資産や、外部のJavascirpt を呼び出したいです。
    • 具体的には、外部のOAuthが必要なサービスと連携したアプリを作っております。
  • まずは、ライブラリを取り込むテストをしようと require構文としたところ、未定義エラーとなりました。

発生した問題やエラーメッセージを具体的に書きましょう

Uncaught ReferenceError: require is not defined となり、require が使えません。

実行したコードをコピー&ペーストしましょう

  1. hoge.js を定義し、ファイルをアップロードしました。
function hoge() {
  console.log('hoge');
}
exports.hoge = hoge();  // exports構文もエラーとなっておりますが、今回も相談からは除外します。
  1. 処理を実行する側の序文で、hoge を取り込み。
var hoge = require('./hoge.js');   //この行が Uncaught ReferenceError となります。
(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(e) {
    hoge.hoge;
  });
})();

@bc_ogawa さん

こんにちは、こちらどういった環境でお使いになられるのでしょうか?
kintoneのクラウド基盤上にJSファイルをアップロードされるのであれば、require()は使用できません。
node.js環境想定でしたら、レコード一覧表示イベント(‘app.record.index.show’)のkintone特有のイベントは使用できません。
kintoneでは、CDNといったURLで指定して外部のライブラリを使用する方法が一番簡単だ思われます。
インターネット上に公開されていないローカルのライブラリを指定する必要があるのであれば、webpackでモジュールをまとめてしまうか、関数だけまとめたファイルを作成するかですね。
関数だけというのは @bc_ogawa さんのコードを利用させていただくと下記の形になります。

//main.js

(function() {
  'use strict';
  kintone.events.on('app.record.index.show', function(e) {
    hoge();
  });
})();
//hoge.js

function hoge() {
  console.log('hoge');
};

このようにすればファイルを分割しても関数を呼び出すことができます。
関数をまとめた側を即時関数にいれてしまうと、スコープ外になって読め込めなくなります。
下記に念のため、cybozu社で公開してくださっているリンクとwebpackの参考リンク貼っておきますね。

2 Likes

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。