fix __weex_require__
diff --git a/src/loader.js b/src/loader.js
index 0403140..8abe63d 100644
--- a/src/loader.js
+++ b/src/loader.js
@@ -348,7 +348,7 @@
 __weex_define__('@weex-component/${name}', [], function(__weex_require__, __weex_exports__, __weex_module__) {
 ` + (
   frag.script.length > 0 ? `
-    __weex_script__(__weex_require__, __weex_exports__, __weex_module__)
+    __weex_script__(__weex_module__, __weex_exports__, __weex_require__)
     if (__weex_exports__.__esModule && __weex_exports__.default) {
       __weex_module__.exports = __weex_exports__.default
     }
diff --git a/src/script.js b/src/script.js
index 423bf96..95f385a 100644
--- a/src/script.js
+++ b/src/script.js
@@ -15,20 +15,15 @@
 
       if (requireList && requireList.length > 0) {
         requireList = requireList.filter(str => {
-          if (str.indexOf('@weex-module') < 0) {
-            parsed = parsed.replace(str, '')
+          if (str.indexOf('@weex-module') > 0) {
+            parsed = parsed.replace(str, str.replace('require', '__weex_require__'))
             return true
           }
           return false
         }).join('\n')
       }
 
-      const result = `
-${requireList || ''}
-module.exports = function(require, exports, module){
-${parsed}
-}
-`
+      const result = `module.exports = function(module, exports, __weex_require__){${parsed}}`
       callback(null, result)
     }).catch(e => {
       callback(e, '')
diff --git a/test/expect/l.js b/test/expect/l.js
new file mode 100644
index 0000000..9beba40
--- /dev/null
+++ b/test/expect/l.js
@@ -0,0 +1,26 @@
+{
+  "@weex-component/77db11e29e85b11856342d968781883e": {
+    "ready": "function ready() {\n\t        modal.toast({ message: this.name });\n\t    }",
+    "data": "function data() {\n\t        return {\n\t            name: getName()\n\t        };\n\t    }",
+    "template": {
+      "type": "div",
+      "children": [
+        {
+          "type": "text",
+          "classList": [
+            "hello"
+          ],
+          "attr": {
+            "value": "function () {return 'Hello ' + (this.name)}"
+          }
+        }
+      ]
+    },
+    "style": {
+      "hello": {
+        "fontSize": 26,
+        "color": "#FF0000"
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/test/spec/getName.js b/test/spec/getName.js
new file mode 100644
index 0000000..10878a0
--- /dev/null
+++ b/test/spec/getName.js
@@ -0,0 +1,3 @@
+module.exports = function() {
+    return 'Weex'
+}
\ No newline at end of file
diff --git a/test/spec/l.we b/test/spec/l.we
new file mode 100644
index 0000000..a47501e
--- /dev/null
+++ b/test/spec/l.we
@@ -0,0 +1,31 @@
+<template>
+    <div>
+        <text class="hello">Hello {{name}}</text>
+    </div>
+</template>
+
+
+<style>
+.hello {
+    font-size: 26px;
+    color: red;
+}
+</style>
+
+
+<script>
+var modal = require('@weex-module/modal')
+var getName = require('./getName.js')
+
+
+module.exports = {
+    ready: function() {
+        modal.toast({message: this.name})
+    },
+    data: function() {
+        return {
+            name: getName()
+        }
+    }
+}
+</script>
\ No newline at end of file
diff --git a/test/test.js b/test/test.js
index 4b65f67..6725fe2 100644
--- a/test/test.js
+++ b/test/test.js
@@ -89,16 +89,16 @@
     expectActual('e');
   });
 
-  it('template via src', () => {
+  it('parted files specifed in src', () => {
     expectActual('f');
   });
 
-  it('template via requiring src and specifing alias', () => {
+  it('component by requiring src and specifing alias', () => {
     expectActual('g');
     expect(requireStub.callCount).eql(0);
   });
 
-  it('template by finding elements under same folder', () => {
+  it('component under same folder', () => {
     expectActual('h');
   });
 
@@ -119,4 +119,9 @@
     expect(requireStub.callCount).eql(1);
     expect(requireStub.firstCall.args).eql(['@weex-module/modal']);
   });
+
+  it('template and require commonjs modules', () => {
+    expectActual('l');
+    expect(requireStub.callCount).eql(1);
+  });
 })
diff --git a/test/webpack.config.js b/test/webpack.config.js
index e9f9600..5c58603 100644
--- a/test/webpack.config.js
+++ b/test/webpack.config.js
@@ -3,7 +3,7 @@
 
 var entry = {}
 var start = 'a'
-var end = 'k'
+var end = 'l'
 var count = end.charCodeAt(0) - start.charCodeAt(0)
 
 new Array(count + 1).fill(0)