最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

javascript - Create a custom library module in SuitScript 2.0? - Stack Overflow

matteradmin5PV0评论

I am trying to create a custom profiler library to load into my SuiteScript 2.0 scripts. Its path is /SuiteScripts/profiler.js and my Suitelet is in /SuiteScripts/suitelet.js

Here how I am trying to load it into my suitelet:

define(['N/ui/serverWidget', 'N/log', 'N/file', './profiler'],
  function(serverWidget, log, file, profiler) {
    function onRequest(context) {

      log.debug('profiler', profiler) // --> logs undefined

I've tried two approaches in profiler.js:

Approach #1:

function Profiler() {
  var profileInstance = {};
  // add methods to profileInstance
  return profileInstance
}

Approach #2:

require([],
 function() {
   function profiler() {
     var profilerInstance = {};
     // add methods to profilerInstance
     return profilerInstance;
   }
return {
  profiler: profiler
 };
});

In Approach #2 I also added a ment indicating the SuiteScript version and require.config:

/**
 *@NApiVersion 2.x
 */
require.config({
 shim: {
  'profiler': {
    exports: 'profiler'
  }
},
 paths: {
  profiler: '/SuiteScripts/Buy Request/profiler.js'
 }
});

What am I doing wrong?

I am trying to create a custom profiler library to load into my SuiteScript 2.0 scripts. Its path is /SuiteScripts/profiler.js and my Suitelet is in /SuiteScripts/suitelet.js

Here how I am trying to load it into my suitelet:

define(['N/ui/serverWidget', 'N/log', 'N/file', './profiler'],
  function(serverWidget, log, file, profiler) {
    function onRequest(context) {

      log.debug('profiler', profiler) // --> logs undefined

I've tried two approaches in profiler.js:

Approach #1:

function Profiler() {
  var profileInstance = {};
  // add methods to profileInstance
  return profileInstance
}

Approach #2:

require([],
 function() {
   function profiler() {
     var profilerInstance = {};
     // add methods to profilerInstance
     return profilerInstance;
   }
return {
  profiler: profiler
 };
});

In Approach #2 I also added a ment indicating the SuiteScript version and require.config:

/**
 *@NApiVersion 2.x
 */
require.config({
 shim: {
  'profiler': {
    exports: 'profiler'
  }
},
 paths: {
  profiler: '/SuiteScripts/Buy Request/profiler.js'
 }
});

What am I doing wrong?

Share Improve this question asked Jun 8, 2016 at 17:41 Eric BrobergEric Broberg 413 bronze badges 2
  • What kind of errors are you getting? Have you tried inserting some logging mechanism to test if it's actually loading properly? That is, within the profiler itself... – TonyH Commented Jun 8, 2016 at 17:48
  • log.debug('typeof profiler', typeof profiler) // --> also logs undefined. I need to get a function, or an object, loaded in as a starting point. I must not be wiring things up correctly. – Eric Broberg Commented Jun 8, 2016 at 19:12
Add a ment  | 

1 Answer 1

Reset to default 8

You need to use define instead of require to build your custom modules. Just change your Approach #2 to call define instead of require, and you should be good to go.

I am not sure whether require.config works with SuiteScript or not. You shouldn't need it specifically for this use case.

Post a comment

comment list (0)

  1. No comments so far