質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

2回答

1922閲覧

vueの単一ファイルコンポーネント(.vue)をimportできない

退会済みユーザー

退会済みユーザー

総合スコア0

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2018/01/25 08:01

編集2018/01/25 08:35

typescript

1import Vue from 'vue'; 2import VueRouter from 'vue-router' 3import VueObserveVisibility from 'vue-observe-visibility' 4import axios from 'axios'; 5import jquery from 'jquery'; 6 7/// <reference path="../typings/index.d.ts" /> 8 9/// <reference path="../typings/globals/jquery/index.d.ts" /> 10 11 12// <reference path="./drop" />   //いろいろ試したんですが 13//import Drop = require('./drop.vue');   //呼べません 14//import Drop from 'drop';   //(T___T) 15//import * as Drop from "./drop.vue"; 16//const Drop = require('./drop.vue'); 17 18declare var require: any 19const Drop = require('./drop.vue').default 20 21Vue.use(VueObserveVisibility) 22 23let vue = new Vue({ 24 25})

json

1//package.json 2 3{ 4 "name": "public_html", 5 "version": "1.0.0", 6 "description": "", 7 "main": "index.js", 8 "scripts": { 9 "test": "echo \"Error: no test specified\" && exit 1", 10 "start": "webpack -w", 11 "build": "webpack -w", 12 "watch": "webpack -w" 13 }, 14 "author": "", 15 "license": "ISC", 16 "devDependencies": { 17 "awesome-typescript-loader": "^3.4.1", 18 "axios": "^0.17.1", 19 "css-loader": "^0.28.8", 20 "extract-text-webpack-plugin": "^3.0.2", 21 "jquery": "^3.2.1", 22 "node-sass": "^4.7.2", 23 "sass-loader": "^6.0.6", 24 "source-map-loader": "^0.2.3", 25 "style-loader": "^0.19.1", 26 "typescript": "^2.6.2", 27 "webpack": "^3.10.0" 28 }, 29 "dependencies": { 30 "typings": "^2.1.1", 31 "vue": "^2.5.13", 32 "vue-class-component": "^6.1.2", 33 "vue-observe-visibility": "^0.3.1", 34 "vue-router": "^3.0.1" 35 } 36} 37

json

1 2{ 3 "compilerOptions": { 4 "sourceMap": true, 5 // TSはECMAScript 5に変換 6 "target": "es5", 7 // TSのモジュールはES Modulesとして出力 8 "module": "es2015", 9 // import Vue from 'vue' の書き方を許容する 10 "allowSyntheticDefaultImports": true, 11 "lib": [ 12 "dom", 13 "es2017" 14 ], 15 "moduleResolution": "node", 16 // デコレーターを有効に設定 17 "experimentalDecorators": true 18 } 19} 20

javascript

1 2//webpack.config.js 3 4const path = require('path'); 5const ExtractTextPlugin = require('extract-text-webpack-plugin'); 6 7module.exports = [{ 8 // メインとなるJavaScriptファイル(エントリーポイント) 9 entry: { 10 home: './ts/home.ts', 11 main: './ts/main.ts', 12 practice: './ts/practice.ts' 13 }, 14 // ファイルの出力設定 15 output: { 16 // 出力ファイルのディレクトリ名 17 path: `${__dirname}/build/js`, 18 // 出力ファイル名 19 filename: '[name].js' 20 }, 21 module: { 22 rules: [{ 23 // 拡張子 .ts の場合 24 test: /.ts$/, 25 // TypeScript をコンパイルする 26 use: 'awesome-typescript-loader' 27 }, 28 // ソースマップファイルの処理 29 { 30 enforce: 'pre', 31 test: /.js$/, 32 loader: 'source-map-loader' 33 } 34 ] 35 }, 36 // import 文で .ts ファイルを解決するため 37 resolve: { 38 extensions: ['.ts', '.js', '.vue'], 39 // Webpackで利用するときの設定 40 alias: { 41 vue: 'vue/dist/vue.js', 42 axios: 'axios/lib/axios.js' 43 } 44 }, 45 // ソースマップを有効に 46 devtool: 'source-map' 47}, { 48 entry: { 49 common: './sass/common.scss', 50 font: './sass/font.scss', 51 home: './sass/home.scss', 52 }, 53 output: { 54 // 出力ファイルのディレクトリ名 55 path: `${__dirname}/build/css`, 56 // 出力ファイル名 57 filename: '[name].css' 58 }, 59 module: { 60 rules: [{ 61 test: /.scss$/, 62 use: ExtractTextPlugin.extract({ 63 fallback: 'style-loader', 64 use: [{ 65 loader: 'css-loader', 66 options: { minimize: true } 67 }, 68 { 69 loader: 'sass-loader', 70 options: { minimize: true } 71 } 72 ] 73 }) 74 }] 75 }, 76 plugins: [ 77 new ExtractTextPlugin('[name].css') 78 ], 79 externals: [{ 80 jquery: 'jQuery' 81 }] 82}]; 83

vue

1//テンプレートにはDOM要素を書く 2<template> 3 <div> 4 <input type="file" @change="onDrop"> 5 </div> 6</template> 7//sciprtにはVueインスタンスで書いたときのような処理を書く 8<script> 9 export default { 10 methods:{ 11 //ファイルを選択したときの処理 12 onDrop:function(event){ 13 let fileList = event.target.files 14 } 15 }, 16 } 17</script> 18//styleにcssを書いていくんだけれども省略 19<style lang="scss"> 20</style>

javascriptで言う所の

const Drop = require('./drop');

みたいなことをタイプスクリプトでしたいのですが、全然できません(T___T)
You may need an appropriate loader to handle this file type.
とコンソールで言われるので、ts-loaderというのを使うようconfigを編集したりしたのですがうまく行きませんでした…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

.tsファイルしかwebpackのコンフィグになさそうなのが怪しそうですね。
require("drop.vue")としているので。
.tsで統一するか、.vueをコンパイルできるようにしたら良さそうです

rules: [{ // 拡張子 .ts の場合 // ↓ここが怪しそう test: /.ts$/, // TypeScript をコンパイルする use: 'awesome-typescript-loader' }, // ソースマップファイルの処理 { enforce: 'pre', test: /.js$/, loader: 'source-map-loader' } ]

投稿2018/01/25 09:13

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/01/25 09:21

ありがとうございます。ちょっと今drop.vueをtsで表現する方法を考えているのですが結構難しいです(>___<) が、それでいこうかなと思います!!!
guest

0

ベストアンサー

webpack.config.jsに

{
test: /.vue$/,
exclude: /node_modules/,
loader: 'vue-loader'
}

を加えてたらできました

投稿2018/01/26 04:14

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問