Browse Source

fix(ssr): should not warn for custom directives that do not have ssr implementation

fix #9167
Evan You 7 years ago
parent
commit
780dac561b
2 changed files with 17 additions and 18 deletions
  1. 1 1
      src/server/render.js
  2. 16 17
      test/ssr/ssr-string.spec.js

+ 1 - 1
src/server/render.js

@@ -326,7 +326,7 @@ function renderStartingTag (node: VNode, context) {
       for (let i = 0; i < dirs.length; i++) {
         const name = dirs[i].name
         if (name !== 'show') {
-          const dirRenderer = resolveAsset(context, 'directives', name, true)
+          const dirRenderer = resolveAsset(context, 'directives', name)
           if (dirRenderer) {
             // directives mutate the node's data
             // which then gets rendered by modules

+ 16 - 17
test/ssr/ssr-string.spec.js

@@ -794,23 +794,6 @@ describe('SSR: renderToString', () => {
     })
   })
 
-  it('should resolve custom directive', done => {
-    renderToString(new Vue({
-      directives: {
-        test: {
-          bind(node) {
-            node.data.domProps = { textContent: 'test' }
-          }
-        }
-      },
-      template: '<div v-test></div>',
-    }), (err, result) => {
-      expect('Failed to resolve directive: test').not.toHaveBeenWarned()
-      expect(result).toContain('<div data-server-rendered="true">test</div>')
-      done()
-    })
-  })
-
   it('custom directives', done => {
     const renderer = createRenderer({
       directives: {
@@ -843,6 +826,22 @@ describe('SSR: renderToString', () => {
     })
   })
 
+  it('should not warn for custom directives that do not have server-side implementation', done => {
+    renderToString(new Vue({
+      directives: {
+        test: {
+          bind() {
+            // noop
+          }
+        }
+      },
+      template: '<div v-test></div>',
+    }), () => {
+      expect('Failed to resolve directive: test').not.toHaveBeenWarned()
+      done()
+    })
+  })
+
   it('_scopeId', done => {
     renderVmWithOptions({
       _scopeId: '_v-parent',