diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
index 991a5f0..aeccf9b 100644
--- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
+++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt
@@ -230,7 +230,8 @@
                     generateFullJs = !arguments.irDce,
                     generateDceJs = arguments.irDce,
                     dceDriven = arguments.irDceDriven,
-                    multiModule = arguments.irPerModule
+                    multiModule = arguments.irPerModule,
+                    commonJsRelativePath = true
                 )
             } catch (e: JsIrCompilationError) {
                 return COMPILATION_ERROR
@@ -239,9 +240,9 @@
             val jsCode = if (arguments.irDce && !arguments.irDceDriven) compiledModule.dceJsCode!! else compiledModule.jsCode!!
             outputFile.writeText(jsCode.mainModule)
             jsCode.dependencies.forEach { (name, content) ->
-                val nodeModules = outputFile.resolveSibling("node_modules")
-                if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir()
-                nodeModules.resolve("$name.js").writeText(content)
+//                val nodeModules = outputFile.resolveSibling("node_modules")
+//                if (nodeModules.exists()) check(nodeModules.isDirectory) else nodeModules.mkdir()
+                outputFile.resolveSibling("$name.js").writeText(content)
             }
             if (arguments.generateDts) {
                 val dtsFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "d.ts")!!
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
index 669473e8..3dba6bd 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt
@@ -46,7 +46,8 @@
     generateDceJs: Boolean = false,
     dceDriven: Boolean = false,
     es6mode: Boolean = false,
-    multiModule: Boolean = false
+    multiModule: Boolean = false,
+    commonJsRelativePath: Boolean = false
 ): CompilerResult {
     stageController = object : StageController {}
 
@@ -94,7 +95,8 @@
             mainArguments,
             fullJs = true,
             dceJs = false,
-            multiModule = multiModule
+            multiModule = multiModule,
+            commonJsRelativePath = commonJsRelativePath
         )
         return transformer.generateModule(allModules)
     } else {
@@ -104,7 +106,8 @@
             mainArguments,
             fullJs = generateFullJs,
             dceJs = generateDceJs,
-            multiModule = multiModule
+            multiModule = multiModule,
+            commonJsRelativePath = commonJsRelativePath
         )
         return transformer.generateModule(allModules)
     }
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
index 7d33a3b..7fd930b 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/IrModuleToJsTransformer.kt
@@ -32,7 +32,8 @@
     var namer: NameTables = NameTables(emptyList()),
     private val fullJs: Boolean = true,
     private val dceJs: Boolean = false,
-    private val multiModule: Boolean = false
+    private val multiModule: Boolean = false,
+    private val commonJsRelativePath: Boolean = false
 ) {
     private val generateRegionComments = backendContext.configuration.getBoolean(JSConfigurationKeys.GENERATE_REGION_COMMENTS)
 
@@ -204,7 +205,7 @@
             }
 
             val moduleName = declareFreshGlobal(module.safeName)
-            modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef())
+            modules += JsImportedModule(moduleName.ident, moduleName, moduleName.makeRef(), commonJsRelativePath)
 
             names.forEach {
                 imports += JsVars(JsVars.JsVar(JsName(it), JsNameRef(it, JsNameRef("\$crossModule\$", moduleName.makeRef()))))
diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
index 1d9aace..5ac6412 100644
--- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
+++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/transformers/irToJs/ModuleWrapperTranslation.kt
@@ -94,7 +94,7 @@
         val moduleName = scope.declareName("module")
         val requireName = scope.declareName("require")
 
-        val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalName)) }
+        val invocationArgs = importedModules.map { JsInvocation(requireName.makeRef(), JsStringLiteral(it.externalCommonJsName)) }
         val invocation = JsInvocation(function, listOf(JsNameRef("exports", moduleName.makeRef())) + invocationArgs)
         return listOf(invocation.makeStmt())
     }
diff --git a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
index 3a067e2..9bddb30 100644
--- a/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
+++ b/js/js.ast/src/org/jetbrains/kotlin/js/backend/ast/JsImportedModule.kt
@@ -16,7 +16,14 @@
 
 package org.jetbrains.kotlin.js.backend.ast
 
-class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?) {
+class JsImportedModule(val externalName: String, var internalName: JsName, val plainReference: JsExpression?, val commonJsRelativePath: Boolean) {
+
+    constructor(externalName: String, internalName: JsName, plainReference: JsExpression?): this(externalName, internalName, plainReference, false)
+
     val key = JsImportedModuleKey(externalName, plainReference?.toString())
 }
+
+val JsImportedModule.externalCommonJsName: String
+    get() = if (commonJsRelativePath) "./$externalName.js" else externalName
+
 data class JsImportedModuleKey(val baseName: String, val plainName: String?)
\ No newline at end of file
diff --git a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
index 18106a6..e42d269 100644
--- a/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
+++ b/libraries/stdlib/src/kotlin/util/KotlinVersion.kt
@@ -72,6 +72,6 @@
          * Returns the current version of the Kotlin standard library.
          */
         @kotlin.jvm.JvmField
-        public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 255) // value is written here automatically during build
+        public val CURRENT: KotlinVersion = KotlinVersion(1, 4, 99) // value is written here automatically during build
     }
 }
