Parcel пытается установить пользовательские компоненты vue из npm - PullRequest
0 голосов
/ 05 марта 2019

Когда я запускаю parcel watch index.js, я вижу ошибку консоли (показано ниже).Почему он пытается использовать npm для загрузки моего компонента?

npm ERR! 404 Not found : MyComponent
npm ERR! 404 
npm ERR! 404  'MyComponent' is not in the npm registry.
npm ERR! 404 Your package name is not valid, because 
npm ERR! 404  1. name can no longer contain capital letters
npm ERR! 404 
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/jonny/Projects/invoices/npm-debug.log
?  /home/jonny/Projects/invoices/src/App.vue:7:40: Failed to install Invoice.
    at PromiseQueue.install [as process] (/usr/local/lib/node_modules/parcel-bundler/src/utils/installPackage.js:46:11)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)

App.vue

<template>
    <div>
        {{name}}
        <my-component></my-component>
    </div>
</template>

<script lang="ts">
    import Vue from "vue";
    import MyComponent from "MyComponent"

    export default Vue.extend({
        data: function() {
            return {
                name: 'Hello World!',
            }
        },
        components: {
            MyComponent // This line is the problem!
        }
    });
</script>

<style scoped>

</style> 

MyComponent.vue

<template>
    <div >
    </div>
</template>

<script>
    export default MyComponent = Vue.component('my-component', {
        data: function () {
            return {
                myvalue: 0
            }
        },
    });
</script>

index.js

import Vue from 'vue';
import {default as App} from './App';

new Vue({
    el: '#app',
    render: h => h(App),
});

1 Ответ

0 голосов
/ 05 марта 2019

Путь импорта должен быть относительным для локальных файлов.

Разрешение модуля для пакета использует стандартный алгоритм узла, где простые имена модулей (в данном случае MyComponent) могут вызвать поискв каталоге node_modules (или напрямую в NPM в случае Parcel).

Но MyComponent на самом деле является локальным файлом (MyComponent.vue).Предполагая, что MyComponent.vue находится в том же каталоге, что и App.vue, относительный путь будет ./MyComponent.vue:

// import MyComponent from "MyComponent" // DON'T DO THIS
import MyComponent from "./MyComponent"
...